Pytorch作为当前风头正劲的深度学习框架,以强大的动态图机制笑傲江湖。Pytorch通过autograd构建了自动微分系统,并且基于autograd构建了nn神经网络模块,封装了卷积、池化、全连接等各种神经网络常见结构。
torch.nn的核心数据结构是Module,它是一个抽象的概念,既可以表示神经网络中的某个层(layer),也可以表示一个包含很多层的神经网络。在实际运用中,我们通常继承nn.Module,撰写自己的网络层。它强大的封装甚至不需要我们定义可学习的参数(比如卷积核的权重和偏置参数)就可以使用。
那么问题来了,当我们想查看网络的可学习参数时,比如卷积层的权重、偏置等时,应该怎么做呢?
答案是可以从每个封装好的具有可学习参数的网络模块的named_parameters()
中查看,注意调用模块实例名.name_parameters()
会分别返回name
和parameter
:
connected_layer = nn.Linear(in_features = 64*64*3, out_features = 1)
for name, parameter in connected_layer.named_parameters():
print(name, parameter)
输出结果:
weight Parameter containing