Керас, попробуй сделать бэкпроп с шага слоя + 1 выходного слоя - PullRequest
0 голосов
/ 18 апреля 2019

Пока я пытался переопределить keras seq2seq как с официального сайта.

https://keras.io/examples/lstm_seq2seq/

Причина: Проблема в том, что некоторые языки содержат слишком много символов, поэтому модели требуется слишком много памяти; поскольку в этом примере используется один горячий преобразованный индекс символов в качестве входных и выходных данных.

Мое решение: Поэтому я пытался использовать сам индекс и использовать слой Embedding после encoder_inputs и decoder_inputs & decoder_outputs.

Проблема: Я пытаюсь скормить ввод и вывод обоих индексов, которые будут иметь форму [num_samples x sequence_length], а слой Embedding будет излучать [num_samples x sequence_length x embedding_dimension].

Модель будет иметь форму, подобную приведенной ниже:

Model(inputs=[encoder_inputs, decoder_inputs], outputs=[decoder_outputs])

и есть два отдельных слоя для встраивания

Embedding(...)(encoder_inputs) # Embedding layer for encoder - language A
Embedding(...)(decoder_inputs) # Embedding layer for decoder - language B
Embedding(...)(decoder_outputs) # Embedding layer for decoder - language B

Заметьте, что то, что пытается сделать backprop, - это индексы в последовательностях, а не встроенные, поскольку я кормлю только индексами! Но я хочу поддержать данные выходов встроенного декодера, чтобы слой Embedded также мог тренироваться полностью.

Проще говоря, я хочу получить обратное распространение от шага + 1 к слою, в который выводятся выходные данные.

Как я могу сделать это, чтобы выполнить такую ​​вещь в Керасе?

...