请给我一份基于paddlepaddle的单输入单输出,中间层层数待定的全连接神经网络代码,要求代码每步有详细的注释
时间: 2023-12-14 08:38:45 浏览: 156
两层的神经网络的代码实例
好的,以下是基于PaddlePaddle的单输入单输出、中间层数可调整的全连接神经网络代码,注释详细:
```python
import paddle
import paddle.nn as nn
class FCNet(nn.Layer):
def __init__(self, input_size, output_size, hidden_sizes):
super(FCNet, self).__init__()
self.input_size = input_size
self.output_size = output_size
self.hidden_sizes = hidden_sizes
# 定义输入层,输入维度为 input_size
self.input_layer = nn.Linear(input_size, hidden_sizes[0])
# 定义隐藏层
self.hidden_layers = nn.LayerList()
for i in range(len(hidden_sizes)-1):
hidden_layer = nn.Linear(hidden_sizes[i], hidden_sizes[i+1])
self.hidden_layers.append(hidden_layer)
# 定义输出层,输出维度为 output_size
self.output_layer = nn.Linear(hidden_sizes[-1], output_size)
def forward(self, x):
x = self.input_layer(x)
x = nn.functional.relu(x) # 使用ReLU激活函数
# 逐层计算隐藏层输出
for hidden_layer in self.hidden_layers:
x = hidden_layer(x)
x = nn.functional.relu(x) # 使用ReLU激活函数
output = self.output_layer(x) # 计算输出层输出
return output
```
其中,`input_size`为输入层的维度, `output_size`为输出层的维度,`hidden_sizes`为隐藏层的维度列表,例如`[64, 32, 16]`表示三层隐藏层,分别包含64、32、16个神经元。
使用方式:
```python
model = FCNet(input_size=10, output_size=2, hidden_sizes=[64, 32, 16])
x = paddle.rand(shape=[3, 10]) # 输入数据,batch_size为3,特征维度为10
y = model(x) # 模型输出,shape为[3, 2]
```
阅读全文