gpt4 book ai didi

machine-learning - Tensorflow 中 RNN 的 LSTMStateTuple 与 cell.zero_state()

转载 作者:行者123 更新时间:2023-11-30 08:22:50 26 4
gpt4 key购买 nike

我对在 RNN 的 Tensorflow 中使用初始状态张量的正确方法感到困惑。使用 LSTMStateTuple 的教程之间几乎有 50/50 的比例。或cell.zero_state .

这两个是一样的吗?如果是这样,为什么有两种方法?

在一个示例中,他们使用 tf.nn.rnn_cell.LSTMStateTuple设置初始状态,在另一个状态中,他们使用 cell.zero_state()

为什么有两种方法?什么时候选择其中之一?只能用LSTMStateTuple吗当您设置state_is_tuple时?如果是这样,cell.zero_state()不再工作了吗?

最佳答案

两者是不同的东西。 state_is_tuple 用于 LSTM 单元,因为 LSTM 单元的状态是一个元组。 cell.zero_state 是所有 RNN 单元状态的初始值设定项。

您通常会更喜欢 cell.zero_state 函数,因为它将根据 state_is_tuple 是否为 true 来初始化所需的状态类。

参见this GitHub 问题,您可以在其中看到推荐的 cell.zero_state - “在单元对象上使用 Zero_state 函数”。

您可能需要 cell.zero_state 的另一个原因是它与单元类型(LSTM、GRU、RNN)无关,您可以执行以下操作:

if type == 'GRU':
cell = BasicGRUCell
else:
cell = BasicLSTMCell(state_is_tuple=True)

init_state = cell.zero_state(batch_size)

初始状态设置正常。

LSTMStateTuple 仅适用于状态为元组的单元。

何时使用 LSTMStateTuple?

当您使用自定义值(由训练器传递)初始化状态时,您需要使用LSTMStateTuplecell.zero_state() 将返回所有值都等于 0.0 的状态。

如果您想在批处理之间保留状态,则必须在每个批处理之后获取它,并将其添加到下一个批处理的 feed_dict 中。

参见this了解为什么 LSTM 状态是一个元组。

关于machine-learning - Tensorflow 中 RNN 的 LSTMStateTuple 与 cell.zero_state(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43192809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com