PaddlePaddle网络极简搭建方法
收藏
前几天讲解了PaddlePaddle框架使用的核心教程、超深层网络的搭建技巧、自定义网络层、参数特定初始化方法。
在PaddlePaddle中,有没有极简使用方法呢?
答案是肯定的,即直接在paddle.nn.Sequential()顺序容器中堆叠神经网络层。
import paddle
net = paddle.nn.Sequential(
paddle.nn.Conv2D(in_channels=3, out_channels=16, kernel_size=3, stride=1, padding=1),
paddle.nn.ReLU(),
paddle.nn.MaxPool2D(kernel_size=2, stride=2),
paddle.nn.Conv2D(in_channels=16, out_channels=32, kernel_size=1, stride=1, padding=1),
paddle.nn.ReLU(),
paddle.nn.MaxPool2D(kernel_size=2, stride=2),
paddle.nn.Flatten(),
paddle.nn.Linear(in_features=2048, out_features=1024),
paddle.nn.ReLU(),
paddle.nn.Dropout(0.5),
paddle.nn.Linear(in_features=1024, out_features=10)
)
model = paddle.Model(net)
model.summary(input_size=(None, 3, 28, 28))
# 训练时候直接使用model.fit
model.fit(train_data=None, eval_data=None, batch_size=1, epochs=1)
输出模型结构信息如下:
---------------------------------------------------------------------------
Layer (type) Input Shape Output Shape Param #
===========================================================================
Conv2D-1 [[1, 3, 28, 28]] [1, 16, 28, 28] 448
ReLU-1 [[1, 16, 28, 28]] [1, 16, 28, 28] 0
MaxPool2D-1 [[1, 16, 28, 28]] [1, 16, 14, 14] 0
Conv2D-2 [[1, 16, 14, 14]] [1, 32, 16, 16] 544
ReLU-2 [[1, 32, 16, 16]] [1, 32, 16, 16] 0
MaxPool2D-2 [[1, 32, 16, 16]] [1, 32, 8, 8] 0
Flatten-1 [[1, 32, 8, 8]] [1, 2048] 0
Linear-1 [[1, 2048]] [1, 1024] 2,098,176
ReLU-3 [[1, 1024]] [1, 1024] 0
Dropout-1 [[1, 1024]] [1, 1024] 0
Linear-2 [[1, 1024]] [1, 10] 10,250
===========================================================================
Total params: 2,109,418
Trainable params: 2,109,418
Non-trainable params: 0
---------------------------------------------------------------------------
Input size (MB): 0.01
Forward/backward pass size (MB): 0.40
Params size (MB): 8.05
Estimated Total Size (MB): 8.45
---------------------------------------------------------------------------
DeepGeGe
已解决
2#
回复于2021-12
虽然这种网络搭建方式很简单,但是还是推荐使用定义继承自paddle.nn.Layer类的方式,因为该方式灵活度更高。 paddle.nn.Sequential()API链接:https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/Sequential_cn.html
0
收藏
请登录后评论
虽然这种网络搭建方式很简单,但是还是推荐使用定义继承自paddle.nn.Layer类的方式,因为该方式灵活度更高。
paddle.nn.Sequential()API链接:https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/Sequential_cn.html