神经网络权重初始化相互妥协

Neural network weights initialization that compromise each other

提问人:Diep Luong 提问时间:11/8/2023 更新时间:11/8/2023 访问量:9

问:

第一层权重非常大、第二层权重非常小的神经网络权重初始化能很好地工作吗?

我试图研究如果第一层的权重被初始化为非常大,而第二层的权重被初始化为非常小,模型的性能会受到怎样的影响。该模型似乎无法学习正确的梯度使其收敛。为什么第一层和第二层权重可以相互妥协?

class Net(nn.Module):
    def __init__(self) -> None:
        super().__init__()
        self.conv1 = torch.nn.Conv1d(141,100,5)
        self.conv2 = torch.nn.Conv1d(100,1,1)
        self.relu = nn.ReLU()
    
    def forward(self,X):
        X = X.transpose(2,1)
        X = self.conv1(X)
        X = self.relu(X)
        X = self.conv2(X)
        return X.transpose(2,1)

model = Net()
model.conv1.weight.data *= 1000
model.conv1.bias.data *= 1000
model.conv2.weight.data /= 1000

# start training here
神经网络 初始化

评论

0赞 Péter Szilvási 11/8/2023
消失/爆炸梯度维基百科文章是理解这个问题的良好开端。

答: 暂无答案