为什么cnn的network训练时用batch_size随机批量梯度下降训练,而预测时可以接受只有一张图片的输入呢?

在批量梯度下降中,权重的更新公式是:w = w + delta(w),  而delta(w) =  -eta * delta(J(w)), 其中eta为学习率,delta(J(w))为所有样本的损失函数计算出来的梯度,注意,是所有样本,也就是批量梯度下降是要等到所有样本的梯度都计算出来后再加起来更新参数,这样,当整个数据集很大的时候,就不适用,而随机梯度下降就是让delta(J(w))为随机的单个的样本的损失函数梯度,也称为在线学习,这样梯度更新快,但是效率低,而随机批量梯度下降就是选择一个小批量来代替全样本,也就是delta(J(w))只是某个批量的损失函数梯度;

在cnn中,一般会把样本切分为多个批量,然后输入定义好的网络,输入的shape可能是(256,3,112,112)也就是批量是256张图片,通道数是3(也就是彩色图片),图片的长和宽是112x112,那么,定义好的卷积层会对这256个批量同时做forward,得出output再反向传播计算误差和梯度,再更新参数,注意,这时的学习率eta应该是定义好的eta除以batch_size,当训练出了适当的参数后,就可以停止训练,这时,我们有一张图片要做预测,图片的shape为(3,112,112),我们用numpy的expand_dim函数,将输入图片扩展为(1,3,112,112),再输入网络,即可得到output,其实,网络的参数只是适应图片的尺寸而已,batch_size是可以调的,可以是1,也可以是2,也可以是256,都可以output相应的东西。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值