tf.nn.dynamic_rnn 中的默认 initial_state 是什么

What's default initial_state in tf.nn.dynamic_rnn

通常我们会用cell.zero_state作为tf.nn.dynamic_rnninitial_state

现在,我想知道如果我们不设置 initial_statetf.nn.dynamic_rnn 中的默认值 initial_state 是什么。

我能找到的最相似的问题是

但是我看不懂答案中的scratch是什么意思:

If you don't set the initial_state, it will be trained from scratch as other weight matrices do.

如果没有initial_state,dynamic_rnn会尝试调用cell.get_initial_state(inputs=None, batch_size=batch_size, dtype=dtype)设置initial_state,如果cell.get_initial_state没有定义,cell.zero_state被使用。参见dynamic_rnnhttps://github.com/tensorflow/tensorflow/blob/v2.2.0/tensorflow/python/ops/rnn.py#L671

的源代码

对于大多数默认单元实现,cell.get_initial_state 函数定义与 cell.zero_state if inputs is none 相同。例如https://github.com/tensorflow/tensorflow/blob/v2.2.0/tensorflow/python/ops/rnn_cell_impl.py#L281-L309

总之,无论是否设置initial_state,都使用cell.zero_state。但是您可以构建自己的单元并重新实现 cell.get_initial_state.