多层感知机python代码
时间: 2023-07-03 09:27:56 浏览: 67
以下是一个使用Python的numpy实现多层感知机的示例代码:
```python
import numpy as np
# 定义激活函数
def relu(x):
return np.maximum(x, 0)
def softmax(x):
exp_x = np.exp(x)
return exp_x / np.sum(exp_x, axis=1, keepdims=True)
# 定义多层感知机类
class MLP:
def __init__(self, input_size, hidden_size, output_size):
self.W1 = np.random.randn(input_size, hidden_size) * 0.01
self.b1 = np.zeros((1, hidden_size))
self.W2 = np.random.randn(hidden_size, output_size) * 0.01
self.b2 = np.zeros((1, output_size))
def forward(self, X):
self.Z1 = np.dot(X, self.W1) + self.b1
self.A1 = relu(self.Z1)
self.Z2 = np.dot(self.A1, self.W2) + self.b2
self.A2 = softmax(self.Z2)
return self.A2
def backward(self, X, y, learning_rate):
m = X.shape[0]
dZ2 = self.A2 - y
dW2 = np.dot(self.A1.T, dZ2) / m
db2 = np.sum(dZ2, axis=0, keepdims=True) / m
dZ1 = np.dot(dZ2, self.W2.T) * (self.Z1 > 0)
dW1 = np.dot(X.T, dZ1) / m
db1 = np.sum(dZ1, axis=0, keepdims=True) / m
self.W2 -= learning_rate * dW2
self.b2 -= learning_rate * db2
self.W1 -= learning_rate * dW1
self.b1 -= learning_rate * db1
# 训练模型
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[1, 0], [0, 1], [0, 1], [1, 0]])
mlp = MLP(2, 4, 2)
for i in range(10000):
A2 = mlp.forward(X)
mlp.backward(X, y, 0.1)
if i % 1000 == 0:
loss = -np.mean(y * np.log(A2))
print("Epoch {}: loss = {}".format(i, loss))
# 测试模型
print(mlp.forward(X))
```
以上代码实现的是一个解决异或问题的多层感知机,使用了一个隐藏层和一个输出层,激活函数使用 ReLU 和 softmax。使用 forward 方法计算前向传播,使用 backward 方法计算反向传播更新权重。在训练过程中,使用交叉熵损失函数和批量梯度下降优化算法。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![py](https://img-home.csdnimg.cn/images/20210720083646.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)