请用python写一个神经网络预测模型代码
时间: 2024-02-01 07:02:26 浏览: 80
基于BP神经网络的数据回归预测Python代码 使用excel数据集 numpy实现
5星 · 资源好评率100%
当然,我可以回答您的问题。下面是一个用Python编写的简单神经网络模型的示例代码,您可以根据自己的需求进行修改和扩展。
```
import numpy as np
# 定义sigmoid激活函数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义模型参数
input_size = 2
hidden_size = 4
output_size = 1
lr = 0.1
# 初始化模型权重
W1 = np.random.randn(input_size, hidden_size)
W2 = np.random.randn(hidden_size, output_size)
b1 = np.zeros((1, hidden_size))
b2 = np.zeros((1, output_size))
# 定义训练数据
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]])
# 训练模型
for i in range(10000):
# 前向传播
hidden_layer = sigmoid(np.dot(X, W1) + b1)
output_layer = sigmoid(np.dot(hidden_layer, W2) + b2)
# 计算误差
loss = np.square(output_layer - y).sum()
# 反向传播
d_loss = 2 * (output_layer - y)
d_output = d_loss * output_layer * (1 - output_layer)
d_hidden = np.dot(d_output, W2.T) * hidden_layer * (1 - hidden_layer)
# 更新权重
dW2 = np.dot(hidden_layer.T, d_output)
db2 = d_output.sum(axis=0, keepdims=True)
dW1 = np.dot(X.T, d_hidden)
db1 = d_hidden.sum(axis=0, keepdims=True)
W1 -= lr * dW1
b1 -= lr * db1
W2 -= lr * dW2
b2 -= lr * db2
if i % 1000 == 0:
print('Epoch {}, loss {:.4f}'.format(i, loss))
# 使用模型进行预测
pred = sigmoid(np.dot(sigmoid(np.dot(X, W1) + b1), W2) + b2)
print('预测值为:\n', pred)
```
希望这个代码示例能够帮到您!
阅读全文