多层感知机python实现
时间: 2023-12-04 09:04:40 浏览: 46
以下是一个简单的多层感知机的 Python 实现,使用 Numpy 库来进行矩阵运算:
```python
import numpy as np
class MLP:
def __init__(self, input_dim, hidden_dim, output_dim):
self.input_dim = input_dim
self.hidden_dim = hidden_dim
self.output_dim = output_dim
# 随机初始化权重
self.weights1 = np.random.randn(input_dim, hidden_dim)
self.bias1 = np.zeros((1, hidden_dim))
self.weights2 = np.random.randn(hidden_dim, output_dim)
self.bias2 = np.zeros((1, output_dim))
def forward(self, X):
# 前向传播计算输出
self.z1 = np.dot(X, self.weights1) + self.bias1
self.a1 = np.tanh(self.z1)
self.z2 = np.dot(self.a1, self.weights2) + self.bias2
self.a2 = self.softmax(self.z2)
return self.a2
def backward(self, X, y, lr=0.1):
# 计算输出误差
delta2 = self.a2 - y
# 计算隐藏层误差
delta1 = (1 - np.power(self.a1, 2)) * np.dot(delta2, self.weights2.T)
# 更新权重和偏置
self.weights2 -= lr * np.dot(self.a1.T, delta2)
self.bias2 -= lr * np.sum(delta2, axis=0, keepdims=True)
self.weights1 -= lr * np.dot(X.T, delta1)
self.bias1 -= lr * np.sum(delta1, axis=0)
def softmax(self, x):
exp_x = np.exp(x)
return exp_x / np.sum(exp_x, axis=1, keepdims=True)
```
以上实现了一个单隐藏层的 MLP,输入层神经元数为 `input_dim`,隐藏层神经元数为 `hidden_dim`,输出层神经元数为 `output_dim`。在初始化时随机初始化权重,使用 tanh 作为激活函数,softmax 作为输出函数。
`forward` 方法用于前向传播计算输出。`backward` 方法用于根据输出误差反向传播更新权重和偏置。`softmax` 方法用于计算输出的概率分布。
相关推荐
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)