[tensorflow][原创]关于传智播客3天带你玩转Python深度学习视频讲解的卷积层池化层输入输出可能存在错误

3天带你玩转Python深度学习老师讲解一个重要知识点可能错误,那就是关于卷积核池化输入和输出计算问题,padding=SAME时候输入和输出大小并不一定是一样的,但是里面讲解老师说padding=SAME输出和输入图像大小一样,这个证明是错的。老师说公式是
(输入大小-卷积核大小+2xpadding)/strides=输出大小,这个似乎有些问题,经过实际证明和谷歌提供的文档,应该是padding=SAME时候输出大小=Math.Ceil(输入大小/strides),而padding=Valid时候,输出大小为Math.ceil(输入大小-卷积核大小+1)/strides,不知道是不是我理解有问题呢,我通过代码查看应该我提供两个公式,而不是(输入大小-卷积核大小+2xpadding)/strides=输出大小,比如以下代码

import tensorflow as tf

input = tf.Variable(tf.random_normal([1, 5, 5, 3]))
filter = tf.Variable(tf.random_normal([3, 3, 3, 7]))
result = tf.nn.conv2d(input, filter, strides=[1, 2, 2, 1], padding="SAME")
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
# print(sess.run(result))
print(result.shape)

大家可以看看输入和输出实际不一样。先前我看了视频,我也深信不疑在padding=SAME输出和输入图像大小一样,但是偶然间看到很多人使用Math.Ceil(输入大小/strides)这个公式,我才开始怀疑,经过代码证明,(输入大小-卷积核大小+2xpadding)/strides=输出大小存在一些问题,希望这方面大牛出来解答一下,到底哪个公式才是正确的,以免后续计算错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FL1623863129

你的打赏是我写文章最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值