首先定义一个初始化函数
假如我们想使用 nn.Conv1d
(像class TrainNet(nn.Module):这样定义就好)
为我们所用,
elif isinstance(m, nn.Conv1d):
m.weight.data.fill_(1)
#m.weight.data=m.weight.data
#可以这样赋值给m.weight.data
m.bias.data.zero_()
我是将所有的weight全设置为1
所有的bias自然设置为全0
#网络初始化
net=TrainNet()
#设置我们想要的参数
initNetParams(net)
#使用1维卷积
net(data)
def initNetParams(net):
'''Init net parameters.'''
for m in net.modules():
if isinstance(m, nn.Conv2d):
init.xavier_uniform(m.weight)
if m.bias:
init.constant(m.bias, 0)
elif isinstance(m, nn.BatchNorm2d):
init.constant(m.weight, 1)
init.constant(m.bias, 0)
elif isinstance(m, nn.Linear):
init.normal(m.weight, std=1e-3)
if m.bias:
init.constant(m.bias, 0)
elif isinstance(m, nn.Conv1d):
m.weight.data.fill_(1)
m.bias.data.zero_()
class TrainNet(nn.Module):
def __init__(self):
super().__init__()
self.hidden_layer = nn.Sequential(
nn.Conv1d(4096,4096,10,1,9),
)
def forward(self, xs):
return self.hidden_layer(xs)
net=TrainNet()
initNetParams(net)
net()