【深度学习】2-5 神经网络-批处理

这篇具有很好参考价值的文章主要介绍了【深度学习】2-5 神经网络-批处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

批处理(Batch Processing)是指在深度学习中每次迭代更新模型参数时同时处理多个样本的方式

批处理时要注意对应维度的元素个数要一致

关于之前手写数字识别的例子:
用图表示,可以发现,多维数组的对应维度的元素个数确实是一致的。此外,还可以确认最终的结果是输出元素个数为10的一维数组。
【深度学习】2-5 神经网络-批处理

现在来考虑打包输入多张图像的情形。
我们想用predict函数一次性打包处理100张图像。为此,可以把的形状改为100 x 784,将100张图像打包作为输人数据。用图表示的话
【深度学习】2-5 神经网络-批处理

可以发现最后输出数据的形状100 x 10。
这种打包式的输人数据称为批(batch)
批处理对计算机的运算大有利处,可以大幅缩短每张图像的处理时间

下面我们进行基于批处理的代码实现。

x,t = get_data()
network= init_network()

batch_size = 100  # 批数量
accuracy_cnt = 0
for i in range(0,len(x),batch_size):
	x_batch = x[i:i+batch_size]
	y_batch = predict(network,x_batch)
	p= np.argmax(y_batch,axis=1)
	accuracy_cnt += np.sum(p == t[i:i+batch_size])
print("Accuracy:"+str(float(accuracy_cnt) / len(x)))

通过x[i:i+batch_size]从输入数据中抽出批数据,然后,通过argmax()获取值最大的元素的索引,要注意的是这里给定了axis =1,也意味着在100 x 10的数组中,沿着第1维方向(以第1维为轴)找到值最大的元素的索引(矩阵的第0维是列方向,第1维是行方向),看下面这个例子:

>>>x = np.array([[0.1,0.8,0.1], [0.30.10.6], [0.20.50.3], [0.80.10.1]])
>>>y=np.argmax(x, axis=1)
>>>print(y)
[1 2 1 0] 

在实现批处理时,需要注意以下几个方面:
内存限制:批处理大小应该根据硬件设备的内存大小来设置,防止内存溢出。
数据划分:将训练数据划分成多个批次时,应该保证每个批次的样本分布相似,避免训练出现偏差。
学习率调整:批处理的使用可能会对学习率的选择产生影响,需要对学习率进行相应的调整。文章来源地址https://www.toymoban.com/news/detail-491837.html

到了这里,关于【深度学习】2-5 神经网络-批处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包