人工神经网络 py 练习 代码
时间: 2023-07-03 11:25:34 浏览: 38
以下是一个简单的人工神经网络的 Python 代码示例:
```python
import numpy as np
# 定义 sigmoid 函数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义神经网络类
class NeuralNetwork:
def __init__(self, num_inputs, num_hidden, num_output):
# 随机初始化权重
self.hidden_weights = np.random.randn(num_inputs, num_hidden)
self.output_weights = np.random.randn(num_hidden, num_output)
def forward(self, inputs):
# 计算隐藏层的输出
hidden_layer_outputs = sigmoid(np.dot(inputs, self.hidden_weights))
# 计算输出层的输出
output_layer_outputs = sigmoid(np.dot(hidden_layer_outputs, self.output_weights))
return output_layer_outputs
def train(self, inputs, targets, num_epochs, learning_rate):
for epoch in range(num_epochs):
# 前向传播
hidden_layer_outputs = sigmoid(np.dot(inputs, self.hidden_weights))
output_layer_outputs = sigmoid(np.dot(hidden_layer_outputs, self.output_weights))
# 计算输出误差和梯度
output_errors = targets - output_layer_outputs
output_gradients = output_errors * output_layer_outputs * (1 - output_layer_outputs)
# 计算隐藏层误差和梯度
hidden_errors = np.dot(output_gradients, self.output_weights.T)
hidden_gradients = hidden_errors * hidden_layer_outputs * (1 - hidden_layer_outputs)
# 更新权重
self.output_weights += learning_rate * np.dot(hidden_layer_outputs.T, output_gradients)
self.hidden_weights += learning_rate * np.dot(inputs.T, hidden_gradients)
# 创建神经网络并进行训练
nn = NeuralNetwork(2, 2, 1)
inputs = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
targets = np.array([[0], [1], [1], [0]])
nn.train(inputs, targets, 10000, 0.1)
# 预测新的数据
new_inputs = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
print(nn.forward(new_inputs))
```
这个神经网络实现了一个 XOR 门的逻辑功能。您可以通过调整输入和输出的数量以及隐藏层的大小来尝试不同的神经网络结构。