编写实现mlp函数,完成不同隐藏层数、神经元个数的实验
时间: 2024-01-22 14:20:41 浏览: 65
神经网络ANN_MLP识别数字-训练图片及代码
4星 · 用户满意度95%
下面是一个实现多层感知器(MLP)的示例代码,你可以根据需要修改隐藏层数和神经元个数,进行实验。
```python
import torch.nn as nn
class MLP(nn.Module):
def __init__(self, input_size, hidden_sizes, output_size):
super().__init__()
self.layers = nn.ModuleList()
# 输入层
self.layers.append(nn.Linear(input_size, hidden_sizes[0]))
# 隐藏层
for i in range(1, len(hidden_sizes)):
self.layers.append(nn.Linear(hidden_sizes[i-1], hidden_sizes[i]))
# 输出层
self.layers.append(nn.Linear(hidden_sizes[-1], output_size))
def forward(self, x):
# 前向传播
for layer in self.layers[:-1]:
x = nn.functional.relu(layer(x))
x = self.layers[-1](x)
return x
```
使用上面的代码定义一个多层感知器,然后传入输入,即可得到输出。下面是一个使用示例:
```python
mlp = MLP(input_size=10, hidden_sizes=[32, 64, 128], output_size=2)
input = torch.randn(5, 10)
output = mlp(input)
print(output.shape) # torch.Size([5, 2])
```
其中,`input_size` 表示输入特征的维度,`hidden_sizes` 是一个列表,表示每个隐藏层的神经元个数,`output_size` 表示输出特征的维度。在上面的示例中,我们定义了一个包含 3 个隐藏层的多层感知器,每个隐藏层的神经元个数分别为 32、64 和 128。输入的特征维度为 10,输出的特征维度为 2。
阅读全文