单层神经网络python代码实现
时间: 2023-09-05 18:13:53 浏览: 85
单层神经网络实现
以下是一个简单的单层神经网络的 Python 代码实现:
```python
import numpy as np
# 定义 sigmoid 函数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义单层神经网络类
class SingleLayerPerceptron:
def __init__(self, input_size, output_size):
self.weights = np.random.randn(input_size, output_size)
self.bias = np.random.randn(output_size)
def forward(self, inputs):
self.inputs = inputs
self.output = sigmoid(np.dot(inputs, self.weights) + self.bias)
return self.output
def backward(self, error):
# 计算权重和偏差的梯度
d_weights = np.dot(self.inputs.T, error * self.output * (1 - self.output))
d_bias = np.sum(error * self.output * (1 - self.output), axis=0)
# 更新权重和偏差
self.weights -= d_weights
self.bias -= d_bias
# 返回输入误差
return np.dot(error * self.output * (1 - self.output), self.weights.T)
```
在这个代码中,我们首先定义了 sigmoid 函数,然后定义了一个名为 SingleLayerPerceptron 的单层神经网络类。在类的初始化方法中,我们随机初始化了权重和偏差。在前向传播方法 forward 中,我们首先将输入保存到 self.inputs 中,然后通过 np.dot 方法计算输入与权重的乘积,加上偏差,再将结果输入到 sigmoid 函数中得到输出。在反向传播方法 backward 中,我们首先计算误差对权重和偏差的梯度,然后用梯度更新权重和偏差,最后返回输入误差。
阅读全文