tenensflow dynamic_rnn как сохранить и передать скрытые состояния

У меня есть многослойная ячейка с тензорным потоком, подобная этой:

def MakeLSTMCell(self):
    cells = []
    for n in self.numUnits:
        cell = tf.nn.rnn_cell.LSTMCell(n)
        dropout = tf.nn.rnn_cell.DropoutWrapper(cell,
                                                input_keep_prob=self.keep_prob,
                                                output_keep_prob=self.keep_prob)
        cells.append(dropout)
    stackedRNNCell = tf.nn.rnn_cell.MultiRNNCell(cells)
    return stackedRNNCell

def BuildGraph(self):
    """
    Build the Graph of the recurrent reinforcement neural network.
    """
    with self.graph.as_default():
        with tf.variable_scope(self.scope):
            self.inputSeq = tf.placeholder(tf.float32, [None, None, self.observationDim], name='input_seq')
            self.batch_size = tf.shape(self.inputSeq)[0]
            self.seqLength = tf.shape(self.inputSeq)[1]
            self.cell = self.MakeLSTMCell()

            with tf.name_scope("LSTM_layers"):
                self.zeroState = self.cell.zero_state(self.batch_size, tf.float32)
                self.cellState = self.zeroState

                self.outputs, self.outputState = tf.nn.dynamic_rnn(self.cell,
                                                         self.inputSeq,
                                                         initial_state=self.cellState,
                                                         swap_memory=True)

Тем не менее, это self.cellState не настраивается Я хотел бы знать, как я могу сохранить скрытое состояние lstm (сохраняет ту же форму, чтобы я мог передать его обратно в rnn в любое время) и использовать его в любое время, как initial_state?

Я попробовал принятый ответ на этот вопрос: Tensorflow, лучший способ сохранить состояние в RNN? Однако динамический размер пакета не допускается при создании переменной tf.

Любая помощь будет оценена

0 ответов

Другие вопросы по тегам