【发布时间】:2017-12-11 00:37:53
【问题描述】:
默认情况下,函数dynamic_rnn只输出每个时间点的隐藏状态(称为m),可以通过以下方式获得:
cell = tf.contrib.rnn.LSTMCell(100)
rnn_outputs, _ = tf.nn.dynamic_rnn(cell,
inputs=inputs,
sequence_length=sequence_lengths,
dtype=tf.float32)
还有没有办法获得中间(非最终)单元状态 (c)?
tensorflow 贡献者 mentions 可以使用单元格包装器来完成:
class Wrapper(tf.nn.rnn_cell.RNNCell):
def __init__(self, inner_cell):
super(Wrapper, self).__init__()
self._inner_cell = inner_cell
@property
def state_size(self):
return self._inner_cell.state_size
@property
def output_size(self):
return (self._inner_cell.state_size, self._inner_cell.output_size)
def call(self, input, state)
output, next_state = self._inner_cell(input, state)
emit_output = (next_state, output)
return emit_output, next_state
但是,它似乎不起作用。有什么想法吗?
【问题讨论】:
标签: python machine-learning tensorflow lstm rnn