解释return_sequence和return_state

在TensorFlow中,递归layer无论是LSTM还是GRU,最终都是调用的RNN的call方法,返回的RNN的call方法返回的值,其实现链接位于recurrent.py

对其进行简化,代码如下

if self.return_sequences:
  output = outputs
else:
  output = last_output

if self.return_state:
    states = list(states)
  return [output] + states
else:
  return output

也就是说,return_sequence参数决定的是返回第一个参数是最后一个输出(final_output)还是整个序列的输出(outputs),而return_state决定是在返回的输出后(无论是哪种输出),是否输出最后一个细胞状态。

使用LSTM时候如果return_state = True,那么会在output的基础上多返回两个值,如果是GRU,则只会返回一个值,因为后两个值相同。

解释return_sequence和return_state_第1张图片
更详细的说明可以看一下这篇博客,讲解的非常清楚
参考链接:https://www.dlology.com/blog/how-to-use-return_state-or-return_sequences-in-keras/

你可能感兴趣的:(TensorFlow)