Как обернуть тензор потока RNNCell в керас? - PullRequest
0 голосов
/ 13 декабря 2018

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

Я нашел официальную документацию слишком упрощенной, чтобы ее можно было увидетьКак построить пользовательский слой RNN.Есть похожие вопросы здесь и здесь , но они кажутся нерешенными.

Заранее спасибо за вашу помощь!

1 Ответ

0 голосов
/ 13 декабря 2018

Насколько я понимаю, вы должны просто иметь возможность инициализировать ячейку в init () уровня класса, а затем внутри метода вызова ссылаться на нее со своим вводом.

Пример:

class MySimpleLayer(Layer):
  def __init__(self, lstm_size):
    super(MySimpleLayer, self).__init__()
    self.lstm = tf.contrib.rnn.BasicLSTMCell(lstm_size)

  def call(self, batch, state):
    return self.lstm(batch, state)

layer = MySimpleLayer(lstm_size)
logits = layer(batch, state)

Эта реализация настолько же проста, насколько это возможно, поэтому вам может понадобиться изучить методы build () и compute_output_shape () для более сложных случаев использования.

...