2016-12-27 35 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