python 神经网络 示例
时间: 2023-06-01 08:06:03 浏览: 95
好的,我可以为您提供一些 Python 神经网络的示例代码。以下是一个简单的 Python 神经网络示例程序:
```python
import numpy as np
# 定义一个神经网络类
class NeuralNetwork(object):
def __init__(self, input_nodes, hidden_nodes, output_nodes, learning_rate):
# 初始化神经网络结构及参数
self.input_nodes = input_nodes # 输入层节点数
self.hidden_nodes = hidden_nodes # 隐含层节点数
self.output_nodes = output_nodes # 输出层节点数
self.lr = learning_rate # 学习率
self.w_ih = np.random.normal(0.0, pow(self.hidden_nodes, -0.5), (self.hidden_nodes, self.input_nodes)) # 输入层到隐含层的权重矩阵
self.w_ho = np.random.normal(0.0, pow(self.output_nodes, -0.5), (self.output_nodes, self.hidden_nodes)) # 隐含层到输出层的权重矩阵
self.activation_function = lambda x: 1 / (1 + np.exp(-x))
def train(self, inputs_list, targets_list):
# 前向传播
inputs = np.array(inputs_list, ndmin=2).T
targets = np.array(targets_list, ndmin=2).T
hidden_inputs = np.dot(self.w_ih, inputs)
hidden_outputs = self.activation_function(hidden_inputs)
final_inputs = np.dot(self.w_ho, hidden_outputs)
final_outputs = self.activation_function(final_inputs)
# 反向传播
output_errors = targets - final_outputs
hidden_errors = np.dot(self.w_ho.T, output_errors) * hidden_outputs * (1 - hidden_outputs)
self.w_ho += self.lr * np.dot(output_errors * final_outputs * (1 - final_outputs), np.transpose(hidden_outputs))
self.w_ih += self.lr * np.dot(hidden_errors, np.transpose(inputs))
def predict(self, inputs_list):
# 预测
inputs = np.array(inputs_list, ndmin=2).T
hidden_inputs = np.dot(self.w_ih, inputs)
hidden_outputs = self.activation_function(hidden_inputs)
final_inputs = np.dot(self.w_ho, hidden_outputs)
final_outputs = self.activation_function(final_inputs)
return final_outputs
# 测试神经网络
nn = NeuralNetwork(2, 2, 1, 0.1)
inputs_list = [[0, 0], [0, 1], [1, 0], [1, 1]]
targets_list = [[0], [1], [1], [0]]
for i in range(10000):
for inputs, targets in zip(inputs_list, targets_list):
nn.train(inputs, targets)
print(nn.predict([0, 0]))
print(nn.predict([0, 1]))
print(nn.predict([1, 0]))
print(nn.predict([1, 1]))
```
这里使用了一个简单的神经网络,实现了逻辑 "异或" 的功能。您可以参考代码的框架和思路,自己定义神经网络结构及训练集,来完成您自己的神经网络任务。
阅读全文