我正在使用tensorflow,我想用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
答案 0 :(得分:1)
来自dynamic_rnn
的{{3}}:
如果单元格为
LSTMCells
state
将是一个包含LSTMStateTuple
每个单元格。
然后docs可以看到LSTMStateTuple
确实是具有所需c
和h
属性的对象。
不幸的是,您的代码没有给我任何线索,您正在使用哪种类型的单元格,但是显然,它们不是LSTMCells
。因此,除了切换到LSTMCells
之外,我给您提供更好的建议。