神经网络python代码
时间: 2023-09-01 14:07:22 浏览: 43
以下是一个简单的神经网络的Python代码:
```python
import numpy as np
# 定义神经网络结构
class NeuralNetwork:
def __init__(self, input_size, hidden_size, output_size):
self.input_size = input_size
self.hidden_size = hidden_size
self.output_size = output_size
# 初始化权重
self.W1 = np.random.randn(self.input_size, self.hidden_size)
self.W2 = np.random.randn(self.hidden_size, self.output_size)
# 前向传播
def forward(self, X):
self.z1 = np.dot(X, self.W1)
self.a1 = self.sigmoid(self.z1)
self.z2 = np.dot(self.a1, self.W2)
y_hat = self.sigmoid(self.z2)
return y_hat
# 反向传播
def backward(self, X, y, y_hat, lr):
delta2 = (y_hat - y) * self.sigmoid_derivative(self.z2)
dW2 = np.dot(self.a1.T, delta2)
delta1 = np.dot(delta2, self.W2.T) * self.sigmoid_derivative(self.z1)
dW1 = np.dot(X.T, delta1)
self.W2 -= lr * dW2
self.W1 -= lr * dW1
# sigmoid激活函数
def sigmoid(self, z):
return 1 / (1 + np.exp(-z))
# sigmoid激活函数的导数
def sigmoid_derivative(self, z):
return self.sigmoid(z) * (1 - self.sigmoid(z))
```
以上代码定义了一个具有一个隐藏层的神经网络。在初始化中,我们随机初始化权重。在前向传播中,我们计算每个层的输入和输出,并返回预测值。在反向传播中,我们计算梯度,并更新权重。sigmoid函数用于激活函数,sigmoid_derivative函数用于计算其导数。