帮我用python的代码写一段神经网络
时间: 2023-06-03 08:04:43 浏览: 112
python写神经网络
好的,我可以帮您写一段神经网络的Python代码。以下是一个简单的示例:
```python
import numpy as np
# 定义激活函数sigmoid
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义神经网络类
class NeuralNetwork:
def __init__(self, input_dim, hidden_dim, output_dim):
self.weights1 = np.random.randn(input_dim, hidden_dim)
self.weights2 = np.random.randn(hidden_dim, output_dim)
# 前向传播
def forward(self, X):
self.z2 = np.dot(X, self.weights1)
self.a2 = sigmoid(self.z2)
self.z3 = np.dot(self.a2, self.weights2)
y = sigmoid(self.z3)
return y
# 构造模拟数据
X = np.array([ [0,0,1], [0,1,1], [1,0,1], [1,1,1] ])
y = np.array([ [0], [1], [1], [0] ])
# 定义神经网络,输入层3个节点,隐层4个节点,输出层1个节点
nn = NeuralNetwork(3, 4, 1)
# 训练神经网络
learning_rate = 0.5
for i in range(10000):
y_pred = nn.forward(X)
error = y - y_pred
delta3 = error * sigmoid(y_pred, derivative=True)
delta2 = np.dot(delta3, nn.weights2.T) * sigmoid(nn.z2, derivative=True)
nn.weights2 += learning_rate * np.dot(nn.a2.T, delta3)
nn.weights1 += learning_rate * np.dot(X.T, delta2)
# 测试神经网络
test_input = np.array([1,1,0])
test_output = nn.forward(test_input)
print(test_output)
```
这是一个简单的两层神经网络,使用sigmoid作为激活函数,支持前向传播和反向传播,可以用于二分类问题。您可以根据自己的需求进行修改和扩展。注意,这只是一个简单的示例,实际中需要根据具体问题进行调整。
阅读全文