2016-12-27 4 views
2

Я новичок в тензорном потоке, теперь я немного смущен о значении batch_size. Как правило, известно, что значение batch_size является количество образцов для каждой партии, но в соответствии с кодом в ptb_word_lm, кажется, нет:Значение batch_size в ptb_word_lm (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, заключается в следующем: каждый шаг, вы будете тренировать последовательность партий, а не одну партию. Длина последовательности - это число шагов unroll (num_steps).

+0

Спасибо, что имеет смысл, и это также причина, по которой необработанные данные должны быть изменены в [batch_size, batch_len] – shakacs

+0

Итак, чтобы уточнить: «пакет» представляет собой векторный ввод в LSTM, а num_steps - это количество партий в последовательности, которую мы кормим на LSTM во время обучения? Итак, если я изучаю временные ряды, состоящие из значений X, Y, Z на каждом временном шаге, партия будет единым временным шагом для X, Y и Z? – zcleghern

Смежные вопросы