如何理解RNN中的Batch_size?

对于Batch_size肯定都不陌生,是机器学习中的一个重要参数

多数时候使用Batch的训练效果会比设置Batch_size=1的训练效果要好。

通俗的理解一下,Batch_size=126时模型一次看了126个样本再来决定梯度下降往哪个方向降,而Batch_size=1时,模型进行了126次横冲直撞的梯度下降,单样本更新参数的随机性太大,显然可以看出使用Batch的模型效果会更好。

同时CNN中的Batch相对比较好理解,一次读取Batch_size个图片,然后依次输入CNN,前向传播Batch_size次后更新权重即可,但是在RNN中由于数据多了一个时间维度time_step,对Batch的理解会有些不动,这里以NLP举一个简单的例子:

首先我们都知道RNN能展开成这样:

然后有一个数据集包含五句话(天气真好)(你是谁啊)(我是小明)(明天打球)(武汉加油)

数据集的维度就是(batch_size, time_step, feature_dim)= (5, 4, word_embedding)

  time_step1 time_step2 time_step3 time_step4
batch_size1
batch_size2 啊 
batch_size3
batch_size4
batch_size5 武 

对于这样一个数据集,输入RNN的时候是什么情况?

RNN是每个time_step输入一次数据,那么for循环time_step1时,进入网络的数据就是(天,你,我,明, 武)每句话的第一个字进入网络,然后依次往后,这里我们最简单的理解就是同时有batch_size个RNN在处理数据,每个RNN处理一个字,那么time_step1的输出就是(batch_size, hidden_size),整个batch处理完输出为(batch_size, time_step, hidden_size)。

发布了80 篇原创文章 · 获赞 184 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/hesongzefairy/article/details/105159892