首页 Paddle框架 帖子详情
PaddlePaddle网络极简搭建方法 已解决
收藏
快速回复
Paddle框架 其他学习资料 253 1
PaddlePaddle网络极简搭建方法 已解决
收藏
快速回复
Paddle框架 其他学习资料 253 1

前几天讲解了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
收藏
回复
全部评论(1)
时间顺序
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
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户