参考paddle官网链接:
summary-API文档-PaddlePaddle深度学习平台
summary 函数通过 input_size 或 input 打印网络 net 的基础结构和参数信息。input_size 指定网络 net 输入 Tensor 的大小,而 input 指定网络 n
https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/summary_cn.html#summary
import paddle
import paddle.nn as nn
class LeNet(nn.Layer):
def __init__(self, num_classes=10):
super(LeNet, self).__init__()
self.num_classes = num_classes
self.features = nn.Sequential(
nn.Conv2D(
1, 6, 3, stride=1, padding=1),
nn.ReLU(),
nn.MaxPool2D(2, 2),
nn.Conv2D(
6, 16, 5, stride=1, padding=0),
nn.ReLU(),
nn.MaxPool2D(2, 2))
if num_classes > 0:
self.fc = nn.Sequential(
nn.Linear(400, 120),
nn.Linear(120, 84),
nn.Linear(
84, 10))
def forward(self, inputs):
x = self.features(inputs)
if self.num_classes > 0:
x = paddle.flatten(x, 1)
x = self.fc(x)
return x
lenet = LeNet()
params_info = paddle.summary(lenet, (1, 1, 28, 28))
print(params_info)
#
# Layer (type) Input Shape Output Shape Param #
# ===========================================================================
# Conv2D-11 [[1, 1, 28, 28]] [1, 6, 28, 28] 60
# ReLU-11 [[1, 6, 28, 28]] [1, 6, 28, 28] 0
# MaxPool2D-11 [[1, 6, 28, 28]] [1, 6, 14, 14] 0
# Conv2D-12 [[1, 6, 14, 14]] [1, 16, 10, 10] 2,416
# ReLU-12 [[1, 16, 10, 10]] [1, 16, 10, 10] 0
# MaxPool2D-12 [[1, 16, 10, 10]] [1, 16, 5, 5] 0
# Linear-16 [[1, 400]] [1, 120] 48,120
# Linear-17 [[1, 120]] [1, 84] 10,164
# Linear-18 [[1, 84]] [1, 10] 850
# ===========================================================================
# Total params: 61,610
# Trainable params: 61,610
# Non-trainable params: 0
#
# Input size (MB): 0.00
# Forward/backward pass size (MB): 0.11
# Params size (MB): 0.24
# Estimated Total Size (MB): 0.35
#
# {'total_params': 61610, 'trainable_params': 61610}