如何搭建指定结构的生成器神经网络 附PyTorch代码求校验
网络搭建问题解答
你提供的代码存在多处错误,不符合给定的生成器网络结构要求,具体问题和修正方案如下:
现存问题
- 基础语法错误:两处
nn.BatchNorm2d(1)语句末尾都缺失逗号分隔符,代码会直接触发语法报错,无法运行。 - 归一化层使用错误:
- 层类型选错:
BatchNorm2d仅适用于卷积层输出的二维特征图场景,要求输入张量为4维形状(批次大小, 通道数, 特征高, 特征宽);全连接层输出是2维张量(批次大小, 神经元数),没有空间维度,必须使用适配一维特征的BatchNorm1d。 - 参数传错:BatchNorm层的参数需要匹配当前层的输出特征数,两个隐层全连接层都输出100维特征,BN层参数应该设为100,而非1。
- 层类型选错:
- 输出层说明:题目没有对输出层指定归一化、激活函数要求,因此你最后一层写
nn.Linear(100, n_outputs)的逻辑是符合结构要求的。如果是GAN生成器场景,可根据生成数据的取值范围补充对应激活:比如生成[0,1]范围的图像像素加nn.Sigmoid(),生成[-1,1]范围的数据加nn.Tanh(),题目无特殊说明时不需要额外添加。
修正后符合要求的代码
import torch.nn as nn generator = nn.Sequential( # 第一个隐层块:全连接+BN+ReLU nn.Linear(n_inputs, 100), nn.BatchNorm1d(100), nn.ReLU(), # 第二个隐层块:全连接+BN+ReLU nn.Linear(100, 100), nn.BatchNorm1d(100), nn.ReLU(), # 输出层 nn.Linear(100, n_outputs) )
内容的提问来源于stack exchange,提问作者user458
相关产品推荐
相关产品推荐

