请用python写出代码
时间: 2024-10-10 12:06:08 浏览: 22
为了帮助您使用Python编写一个简单的前馈神经网络来模拟给定的数据集,并利用均方误差作为损失函数进行模型训练,下面提供了一个基本示例代码框架:
```python
import numpy as np
# 定义sigmoid激活函数及其导数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def sigmoid_derivative(x):
return x * (1 - x)
# 输入和输出数据(从您的表格中提取)
inputs = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
outputs = np.array([0, 1, 1, 0])
# 初始化权重矩阵
np.random.seed(1)
weights_0 = 2 * np.random.random((2, 2)) - 1 # 假设隐藏层有2个神经元
weights_1 = 2 * np.random.random((2, 1)) - 1
# 设定超参数
learning_rate = 0.5
epochs = 20000
for epoch in range(epochs):
# 正向传播
layer_0 = inputs
layer_1 = sigmoid(np.dot(layer_0, weights_0))
layer_2 = sigmoid(np.dot(layer_1, weights_1))
# 反向传播计算梯度
layer_2_error = outputs - layer_2
if (epoch % 1000) == 0:
print("Error:" + str(np.mean(np.abs(layer_2_error))))
layer_2_delta = layer_2_error * sigmoid_derivative(layer_2)
layer_1_error = layer_2_delta.dot(weights_1.T)
layer_1_delta = layer_1_error * sigmoid_derivative(layer_1)
# 更新权重
weights_1 += layer_1.T.dot(layer_2_delta) * learning_rate
weights_0 += layer_0.T.dot(layer_1_delta) * learning_rate
print("Output After Training:")
print(layer_2)
```
请注意,此脚本仅作为一个基础起点。在实际应用中可能需要进一步调整优化算法或添加正则化等技术以提高性能并防止过拟合。此外,在真实环境中部署此类模型时还需要考虑更多细节,比如数据预处理、验证策略等。
阅读全文