【百度技术学院机器学习训练营第二期】-实验作业
Ta的回复 :01班+夜雨飘零 问题:计算每层网络结构和输入输出尺寸和参数个数。不加BN?更深?每层的尺寸变化?更多结构? [代码] [图片] [图片] 答1: 本网络的的输入数据的shape为(128, 3, 32, 32),所以输出如下: 第一层的卷积层输出shape:(128, 20, 28, 28),参数大小为:20*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=25000 第二层的池化层输出shape:(128, 50, 5, 5) 第三层的卷积层输出shape:(128, 50, 1, 1),参数大小为:50*50*5*5=6250050∗50∗5∗5=62500 第三层的池化层输出shape:(128, 50, 1, 1) 最后的全连接层输出shape:(128, 10),参数大小为:50*10=50050∗10=500 总参数大小:1500+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,所以不能再增加卷积池化层,如果再使用卷积池化层,就会报以下的错误。 [代码]