Tensorflow下对RNN中Batch-size的测试和理解
2017-11-15 11:57
190 查看
这篇笔记是基于tensorflow1.4版本,小白级别。代码是在网上下载的一个做mnist手写数字分类的LSTM,修改了两个小地方。
内存利用率提高了,大矩阵乘法的并行化效率提高。跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。
盲目增大 Batch_Size 有何坏处?
内存利用率提高了,但是内存容量可能撑不住了。跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。
这是一个损失函数局部优有“多坑人”和局部优“数目太多好难选”之间的竞争,竞争平衡点才是你最终的训练值。故此,最终的训练值是一个分布,大伙们一般取平均来证明自己的模型多牛逼。
物理上,就是能量(坑好深)和熵(选择多)的竞争结果,而且复杂系统中,能量和熵一辈子都在竞争,讨论自由能最小值在非凸问题上的意义,比直接讨论损失函数的最小值更有意义。
测试了一下不同大小的batch_size对收敛速度的影响,也不一定准确,尤其是批处理数量较大的时候,前两三次梯度方向的选择对收敛速度至关重要,但是批处理数据又是随机选择的,下面的表格可以作为大致参考
x = tf.split(x, n_steps, 0) cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=pred))
- Batch-size
增大 Batch_Size 有何好处?内存利用率提高了,大矩阵乘法的并行化效率提高。跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。
盲目增大 Batch_Size 有何坏处?
内存利用率提高了,但是内存容量可能撑不住了。跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。
这是一个损失函数局部优有“多坑人”和局部优“数目太多好难选”之间的竞争,竞争平衡点才是你最终的训练值。故此,最终的训练值是一个分布,大伙们一般取平均来证明自己的模型多牛逼。
物理上,就是能量(坑好深)和熵(选择多)的竞争结果,而且复杂系统中,能量和熵一辈子都在竞争,讨论自由能最小值在非凸问题上的意义,比直接讨论损失函数的最小值更有意义。
测试了一下不同大小的batch_size对收敛速度的影响,也不一定准确,尤其是批处理数量较大的时候,前两三次梯度方向的选择对收敛速度至关重要,但是批处理数据又是随机选择的,下面的表格可以作为大致参考
Batch-size | Iter tims when accuracy > 0.99 |
---|---|
64 | 750 |
128 | 350 |
256 | 650 |
512 | 700 |
1024 | 700 |
2056 | 大于1000 |
相关文章推荐
- caffe中的iteration,batch_size, epochs理解
- tensorflow学习笔记--深度学习中的epochs,batch_size,iterations详解
- 2.深度学习中的batch_size的理解
- 如何理解TensorFlow中的batch和minibatch
- 图示理解卷积运算、逆卷积运算、Tensorflow、tf.nn.conv2d_transpose、Conv2DSlowBackpropInput: Size of out_backprop doesn
- 如何理解TensorFlow中的batch和minibatch
- 一句话理解神经网络里的batch_size,iterations,epoch
- (Tensorflow之二十三)BATCH_SIZE的计算方法以及取值方法
- 如何理解TensorFlow中的batch和minibatch
- batch_size的理解
- 如何理解TensorFlow中的batch和minibatch
- 如何理解TensorFlow中的batch和minibatch
- 关于Tensorflow中BATCH_SIZE,CELL_SIZE的讨论
- RNN循环神经网络的直观理解:基于TensorFlow的简单RNN例子
- 如何理解TensorFlow中的batch和minibatch
- tensorflow学习笔记--深度学习中的epochs,batch_size,iterations详解
- MINST数据TensorFlow中CNN测试
- A/B 测试的基本概念举例理解以及具体实现方法【传统A/B测试基于后端的 A/B 测试(Back-end AB test),现在基本上基于前端js在客户端进行分流,有更多优点,请看里面】
- TensorFlow安装完成简单测试(源码)
- 一套帮助你理解C语言的测试题(转)