专栏首页CSDN博客百度机器学习训练营笔记——问题回答

百度机器学习训练营笔记——问题回答

原文博客:Doi技术团队 链接地址:https://blog.doiduoyi.com/authors/1584446358138 初心:记录优秀的Doi技术团队学习经历

说明

这个是使用PaddlePaddle训练cifar10数据集的一个例子

问题1:网络结构

问题:计算每层网络结构和输入输出尺寸和参数个数。不加BN?更深?每层的尺寸变化?更多结构?

def convolutional_neural_network(img):
    print('输入层的shape:', img.shape)
    conv_pool_1 = fluid.nets.simple_img_conv_pool(
        input=img,
        filter_size=5,
        num_filters=20,
        pool_size=2,
        pool_stride=2,
        act="relu")
    print('第一层卷积池化层输出shape:', conv_pool_1.shape)
    conv_pool_1 = fluid.layers.batch_norm(conv_pool_1)
    conv_pool_2 = fluid.nets.simple_img_conv_pool(
        input=conv_pool_1,
        filter_size=5,
        num_filters=50,
        pool_size=2,
        pool_stride=2,
        act="relu")
    print('第二层卷积池化层输出shape:', conv_pool_2.shape)
    conv_pool_2 = fluid.layers.batch_norm(conv_pool_2)
    conv_pool_3 = fluid.nets.simple_img_conv_pool(
        input=conv_pool_2,
        filter_size=5,
        num_filters=50,
        pool_size=2,
        pool_stride=2,
        act="relu")
    print('第三层卷积池化层输出shape:', conv_pool_3.shape)
    prediction = fluid.layers.fc(input=conv_pool_3, size=10, act='softmax')
    print('全连接层输出shape:', prediction.shape)
    return prediction

答1: 本网络的的输入数据的shape为(128, 3, 32, 32),所以输出如下:

  • 第一层的卷积层输出shape:(128, 20, 28, 28),参数大小为:20∗3∗5∗5=150020*3*5*5=150020∗3∗5∗5=1500
  • 第一层的池化层输出shape:(128, 20, 14, 14)
  • 第二层的卷积层输出shape:(128, 50, 10, 10),参数大小为:50∗20∗5∗5=2500050*20*5*5=2500050∗20∗5∗5=25000
  • 第二层的池化层输出shape:(128, 50, 5, 5)
  • 第三层的卷积层输出shape:(128, 50, 1, 1),参数大小为:50∗50∗5∗5=6250050*50*5*5=6250050∗50∗5∗5=62500
  • 第三层的池化层输出shape:(128, 50, 1, 1)
  • 最后的全连接层输出shape:(128, 10),参数大小为:50∗10=50050*10=50050∗10=500
  • 总参数大小:1500+25000+62500+500=895001500+25000+62500+500=895001500+25000+62500+500=89500

PaddlePaddle的网络输出

输入层的shape: (-1, 3, 32, 32)
第一层卷积池化层输出shape: (-1, 20, 14, 14)
第二层卷积池化层输出shape: (-1, 50, 5, 5)
第三层卷积池化层输出shape: (-1, 50, 1, 1)
全连接层输出shape: (-1, 10)

答2: 在没有使用BN层之前:

  • 参数的更新,使得每层的输入输出分布发生变化,称作ICS(Internal Covariate Shift)
  • 差异hui会随着网络深度增大而增大
  • 需要更小的学习率和较好的参数进行初始化

加入了BN层之后:

  • 可以使用较大的学习率
  • 可以减少对参数初始化的依赖
  • 可以拟制梯度的弥散
  • 可以起到正则化的作用
  • 可以加速模型收敛速度

用BN层的训练情况:

不使用BN层的训练情况:

从图中可以看出使用BN层的准确率更高,训练过程中损失值和准确率的幅度更加小。

答3: 因为该网络的第三层卷积池化层输出的宽和高都是1,所以不能再增加卷积池化层,如果再使用卷积池化层,就会报以下的错误。

EnforceNotMet: Due to the settings of padding(0), filter_size(5), dilation(1) and stride(1), the output size is less than 0, please check again. Input_size:1

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 百度机器学习训练营笔记——数学基础

    μ=1N∑i=1Nxi(x:x1,x2,...,xN)\mu=\frac{1}{N}\sum_{i=1}^Nx_i\left(x:x_1,x_2,...,x_N...

    夜雨飘零
  • 快问快答 | 助教带你学习数据科学(附答疑视频领取)

    大数据文摘
  • 豪取BAT!超详细暑期实习算法面经(非科班无论文)

    本人基本情况:211本硕,本科电子信息工程,硕士通信与信息系统,典型的非科班,无论文,两段实习经历(均为算法岗,非大厂,一段CV,一段NLP)。

    NewBeeNLP
  • 春节充电系列:李宏毅2017机器学习课程学习笔记22之结构化学习(Structured learning)线性模型

    【导读】我们在上一节的内容中已经为大家介绍了台大李宏毅老师的机器学习课程的Structured learning-introduction,这一节将主要针对讨论...

    WZEARW
  • 2019秋招算法求职之路分享

    链接:https://www.nowcoder.com/discuss/155407?type=2&order=3&pos=26&page=1

    牛客网
  • Leslie Valiant:机器学习所面临的挑战

    9月6日,以“AI赋能,驱动未来”为主题的2018中国人工智能峰会(CAIS 2018)在南京国际博览会议中心成功召开。本次峰会汇聚了Leslie Valian...

    镁客网
  • 带你用深度学习虚拟机进行文本迁移学习(附代码)

    本文讲述了现代机器学习的模型,主要由微软数据科学家Anusua Trivedi和数据科学家经理Wee Hyong Tok共同撰写。

    数据派THU
  • 知识体系、算法题、教程、面经,这是一份超赞的AI资源列表

    照例先放上 GitHub 地址:https://github.com/Awesome-Interview/Awesome-Interview#LeetCode,...

    AI科技大本营
  • 【干货】深度学习全网最全学习资料汇总之模型介绍篇

    【AI研习社】关注AI前沿、开发技巧及技术教程等方面的内容。欢迎技术开发类文章、视频教程等内容投稿,邮件发送至:zhangxian@leiphone.com ...

    AI研习社

扫码关注云+社区

领取腾讯云代金券