Контекст вопроса:
Я делаю анализ настроений с помощью keras LSTM, поэтому моя форма входных данных, переданная на уровень LSTM, должна быть (количество выборок, количество шагов времени, число элементов)
где каждый образец является предложением, каждый раз в каждом шаге содержится термин предложения.
Главный вопрос:
Наиболее запутанным является управление государством LSTM, я уже знал, что состояние будет сброшено каждую партию по умолчанию. Я тоже не использую stateful
.
Поэтому мой вопрос: что делает LSTM с состояниями внутри партии?
Например, если я установил пакет в размер 32. Тогда это означает, что одновременно будет проведено 32 предложения обучения образцов в одной партии. Как это будет с государством?
Второй элемент первой партии наследует состояние от первого элемента первого элемента?
Если это так, мой batch_size должен быть установлен 1, потому что все анализы предложений предложения должны быть независимыми.
Большое спасибо!
Вам не хватает трюка реализации, в базовом коде входной тензор (batch, timesteps,...)
переносится на майор (timesteps, batch,...)
а затем RNN зацикливается по тайм-пакетам партиями, извлечение из бэкэнда Tensorflow:
# Transpose to time-major, i.e.
# from (batch, time, ...) to (time, batch, ...)
axes = [1, 0] + list(range(2, ndim))
inputs = tf.transpose(inputs, (axes))
Поэтому каждая последовательность в партии начинается с initial_states
которая, если у вас нет stateful=True
, устанавливается путем вызова .get_initial_state(inputs)
в базовом классе RNN. Чтобы ответить на ваш вопрос, каждая последовательность в партии обрабатывается независимо из-за транспозиции.