torchsummary
torchsummary
能够查看模型的输入和输出的形状,可以更加清楚地输出模型的结构。
(model, input_size, batch_size=-1, device="cuda")
功能:查看模型的信息,便于调试
- model:pytorch 模型,必须继承自
- input_size:模型输入 size,形状为 C,H ,W
- batch_size:batch_size,默认为 -1,在展示模型每层输出的形状时显示的 batch_size
- device:"cuda"或者"cpu"
- 使用时需要注意,默认device=‘cuda’,如果是在‘cpu’,那么就需要更改。不匹配就会出现下面的错误:
RuntimeError: Input type () and weight type () should be the same
查看 LeNet 的模型信息代码如下:
# 模型
lenet = LeNet(classes=2)
print(summary(lenet, (3, 32, 32), device="cpu"))
输出如下:
----------------------------------------------------------------
Layer (type) Output Shape Param #
================================================================
Conv2d-1 [-1, 6, 28, 28] 456
Conv2d-2 [-1, 16, 10, 10] 2,416
Linear-3 [-1, 120] 48,120
Linear-4 [-1, 84] 10,164
Linear-5 [-1, 2] 170
================================================================
Total params: 61,326
Trainable params: 61,326
Non-trainable params: 0
----------------------------------------------------------------
Input size (MB): 0.01
Forward/backward pass size (MB): 0.05
Params size (MB): 0.23
Estimated Total Size (MB): 0.30
----------------------------------------------------------------
None
上述信息分别有模型每层的输出形状,每层的参数数量,总的参数数量,以及模型大小等信息。
我们以第一层为例,第一层卷积核大小是 (6, 3, 5, 5),每个卷积核还有一个偏置,因此 $6 \times 3 \times 5 \times 5+6=456$。
详解keras的()输出参数Param计算过程_ybdesire的专栏-****博客