Что LSTM делает с состояниями в пакете? Второй элемент первого пакета наследует состояние от первого элемента первого элемента?

1

Контекст вопроса:

Я делаю анализ настроений с помощью keras LSTM, поэтому моя форма входных данных, переданная на уровень LSTM, должна быть (количество выборок, количество шагов времени, число элементов)

где каждый образец является предложением, каждый раз в каждом шаге содержится термин предложения.


Главный вопрос:

Наиболее запутанным является управление государством LSTM, я уже знал, что состояние будет сброшено каждую партию по умолчанию. Я тоже не использую stateful.

Поэтому мой вопрос: что делает LSTM с состояниями внутри партии?

Например, если я установил пакет в размер 32. Тогда это означает, что одновременно будет проведено 32 предложения обучения образцов в одной партии. Как это будет с государством?

Второй элемент первой партии наследует состояние от первого элемента первого элемента?

Если это так, мой batch_size должен быть установлен 1, потому что все анализы предложений предложения должны быть независимыми.

Большое спасибо!

Теги:
tensorflow
keras
lstm

1 ответ

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. Чтобы ответить на ваш вопрос, каждая последовательность в партии обрабатывается независимо из-за транспозиции.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню