import torch import torch.nn as nn from common_tools import set_seed
set_seed(1) # 设置随机种子 classMLP(nn.Module): def__init__(self, neural_num, layers): super(MLP, self).__init__() self.linears = nn.ModuleList([nn.Linear(neural_num, neural_num, bias=False) for i inrange(layers)]) self.neural_num = neural_num
defforward(self, x): for (i, linear) inenumerate(self.linears): x = linear(x) return x defforward_new(self, x): for (i, linear) inenumerate(self.linears): x = linear(x) print("layer:{}, std:{}".format(i, x.std())) if torch.isnan(x.std()): print("output is nan in {} layers".format(i)) break return x definitialize(self): for m in self.modules(): # 判断这一层是否为线性层,如果为线性层则初始化权值 ifisinstance(m, nn.Linear): nn.init.normal_(m.weight.data) # normal: mean=0, std=1