如果优美的将pytorch的卷积为自己所用

首先定义一个初始化函数
假如我们想使用 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()
发布了285 篇原创文章 · 获赞 89 · 访问量 248万+

猜你喜欢

转载自blog.csdn.net/weixin_32759777/article/details/105385343