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