单层神经网络python实现
时间: 2024-09-22 17:05:28 浏览: 39
单层神经网络也称为感知机,是一种最简单的神经网络结构。它只有一个输入层、一个隐藏层(如果有的话通常可以忽略,因为只有一个节点)以及一个输出层。在Python中,我们可以使用库如`numpy`来实现基本的单层神经网络。
下面是一个简化的例子:
```python
import numpy as np
# 定义权重初始化函数
def init_weights(input_size, hidden_size):
return np.random.uniform(-0.5, 0.5, (input_size + 1, hidden_size))
# 定义激活函数(这里用的是Sigmoid函数)
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 模型训练示例
def train perceptron(inputs, targets, learning_rate=0.1, epochs=1000):
weights = init_weights(len(inputs[0]), 1) # 初始化权重
for _ in range(epochs):
output = sigmoid(np.dot(inputs, weights[:-1]) + weights[-1]) # 前向传播
error = targets - output # 计算误差
delta = error * sigmoid(output) * (1 - sigmoid(output)) # 反向传播
weights[:-1] += learning_rate * np.dot(inputs.T, delta) # 更新权重
weights[-1] += learning_rate * sum(delta)
# 使用模型预测
def predict(inputs, weights):
return sigmoid(np.dot(inputs, weights[:-1]) + weights[-1])
# 示例用法
inputs = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
targets = np.array([[0], [1], [1], [0]])
train_perceptron(inputs, targets)
```
这个例子展示了如何创建一个简单的单层神经网络,并通过梯度下降进行训练。请注意,这只是一个基础版本,实际应用中可能需要处理更多的细节,例如批量训练、交叉验证等。
阅读全文