%reset -f
进口火炬import torch.nn as nn进口火炬import torchvision.transforms as transforms导入numpy为np将matplotlib.pyplot导入为plt将torch.utils.data导入为data_utils…
除了Fabio提到的关于检查图层类型和ReLU是激活而不是可训练层的内容,因为它是关于初始化的,你可以在__init__方法本身中进行权重初始化,就像在这里完成一样:
https://github.com/pytorch/vision/blob/master/torchvision/models/vgg.py
def __init__(self, features, num_classes=1000,...): ----snip--- self._initialize_weights() def _initialize_weights(self): if isinstance(m, nn.Linear): m.weight.data.normal_(0.0, 1)
您正在尝试设置无重力层(ReLU)的权重。
内 weights_init ,您应该在初始化权重之前检查图层的类型。例如:
weights_init
def weights_init(m): if type(m) == nn.Linear: m.weight.data.normal_(0.0, 1)
看到 如何在PyTorch中初始化权重? 。