используйте tf.nn.dynamic_rnn, но в конечном состоянии нет c и h - PullRequest
0 голосов
/ 21 февраля 2019

Я работаю с tenorflow, я хочу запустить программу с RNN, но я получил следующую ошибку:

a=self._encoder_final_state[0].c
AttributeError: 'Tensor' object has no attribute 'c'

Программа выглядит так:

self._encoder_cells = build_rnn_layers(
    cell_type=self._hparams.cell_type,
    num_units_per_layer=self._num_units_per_layer,
    use_dropout=self._hparams.use_dropout,
    dropout_probability=self._hparams.dropout_probability,
    mode=self._mode,
    residual_connections=self._hparams.residual_encoder,
    highway_connections=self._hparams.highway_encoder,
    dtype=self._hparams.dtype,
)

self._encoder_outputs, self._encoder_final_state = tf.nn.dynamic_rnn(
    cell=self._encoder_cells,
    inputs=encoder_inputs,
    sequence_length=self._inputs_len,
    parallel_iterations=self._hparams.batch_size[0 if self._mode == 'train' else 1],
    swap_memory=False,
    dtype=self._hparams.dtype,
    scope=scope,
)
a=self._encoder_final_state[0].c

1 Ответ

0 голосов
/ 21 февраля 2019

Из документов из dynamic_rnn:

Если ячейки LSTMCells state, будет кортеж, содержащий LSTMStateTuple для каждой ячейки.

И здесь вы можете видеть, что действительно LSTMStateTuple - это те, которые имеют требуемые свойства c и h.

К сожалению, ваш код не 'Я не могу понять, какие клетки вы используете, но, по-видимому, они не LSTMCells.Поэтому я не могу дать вам лучший совет, чем переключиться на LSTMCells.

...