打印训练模型的参数信息,下面提供几个方法,以简单的网络模型为例:
import torch
import torch.nn as nn
import torch.nn.functional as F
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
# 卷积层 '1'表示输入图片的通道数,‘6'表示输出的通道数,‘3’表示卷积核的大小
self.conv1 = nn.Conv2d(1, 6, 3)
# 线性层,输入1350个特征,输出10个特征
self.fc1 = nn.Linear(1350, 10) # 这里的1350是如何计算的呢?这就要看后面的forward函数
def forward(self, x):
print(x.size()) # 结果:[1, 1, 32, 32]
# 卷积操作
x = self.conv1(x)
#激活操作
x = F.relu(x)
print(x.size()) # 结果:[1, 6, 30, 30]
#最大池化操作
x = F.max_pool2d(x, (2, 2)) # 我们使用池化层,计算结果是15
x = F.relu(x)
print(x.size()) # 结果:[1, 6, 15, 15]
# reshape,‘-1’表示自适应
# 这里做的就是压扁的操作 就是把后面的[1, 6, 15, 15]压扁,变为 [1, 1350]
x = x.view(x.size()[0], -1)
print(x.size()) # 这里就是fc1层的的输入1350
x = self.fc1(x)
return x
net = Net()
1、查看网络的模型,和参数的信息情况
打印网络
print(net)
#打印参数的信息
# for parameters in net.parameters():
# print(parameters)
打印参数的名字以及参数的数据形状
for name,parameters in net.named_parameters():
print(name,':',parameters.size())
#*************************************************
Net(
(conv1): Conv2d(1, 6, kernel_size=(