2016-12-27 36 views
2

我是tensorflow的新手,我现在对batch_size的含义有点困惑。正如众所周知,中batch_size意思是样品的每个批次的数量,但是根据ptb_word_lm的代码,它似乎并不:batch_size在ptb_word_lm(tensorflow的LSTM模型)中的含义

reader.py:

data_len = tf.size(raw_data) #the number of words in dataset 
batch_len = data_len // batch_size 

是什么batch_len意思?批次的数量?

ptb_word_lm.py:

self.epoch_size = ((len(data) // batch_size) - 1) // num_steps 

是什么epoch_size意思?每批中的序列数量?

但是,如果batch_size意味着批次的数量,那么一切都有意义。我误解了一些东西吗?

回答

3

这里有几个不同的概念:LSTM的时代,步骤,批处理和展开步骤。

在最高层次上,您训练了一个拥有多个时代的网络。在每个时代,您将逐步完成并使用所有训练数据(通常以随机顺序);在每一步中,您都会培训一批样品。

我觉得这里LSTM增加的困惑是:每一步,你都会训练一批批次,而不是一批。序列的长度是展开步骤的数量(num_steps)。

+0

谢谢你,这是有道理的,这也是原始数据应该重新变成[batch_size,batch_len] – shakacs

+0

的原因所以,澄清一下:“批处理”是向LSTM的向量输入,而num_steps是我们在训练时向LSTM提供的序列中的批次数量?因此,如果我正在学习由每个时间步的X,Y,Z值组成的时间序列,那么批次将是X,Y和Z的单个时间步的值? – zcleghern