keras_history[0]支持什么功能?

keras_history[0]支持什么功能?,keras,Keras,我在Keras中发现了一个代码片段,它执行以下操作 from Keras.layers import Input _input = Input(batch_shape=shape) _input._keras_history[0].supports_masking = True 我不太懂第三行。谁能告诉我它是干什么的 对我来说,这听起来很奇怪 掩蔽 Masking是一种用于序列的功能,它告诉模型忽略某些时间步长,因为添加这些步长只是为了将序列填充到所需的大小 向模型添加遮罩的两种主要方法是使用

我在Keras中发现了一个代码片段,它执行以下操作

from Keras.layers import Input
_input = Input(batch_shape=shape)
_input._keras_history[0].supports_masking = True

我不太懂第三行。谁能告诉我它是干什么的

对我来说,这听起来很奇怪

掩蔽
Masking
是一种用于序列的功能,它告诉模型忽略某些时间步长,因为添加这些步长只是为了将序列填充到所需的大小

向模型添加遮罩的两种主要方法是使用
Masking()
层或使用
Embedding()
层中的
mask\u zeros=True
参数

遮罩将发送到模型中该点之后的所有层。因此,以下层必须支持掩蔽

有些层支持掩蔽,有些层不支持。这取决于层是如何构建的。添加
支持_masking=True
似乎唯一合理的地方是“在自定义层内”:一个您自己创建并注意正确处理掩码(如果有)的层。这将告诉Keras,可以在具有遮罩的模型中使用您的层

如果层不支持遮罩,则模型将不会按预期运行。但是简单地说“支持遮罩”而不适当地处理遮罩似乎不是解决这个问题的好办法

_克拉斯尤历史
\u keras\u history
是keras添加到原始张量(张量流张量,或Theano张量,…)的一个属性,有助于keras构建模型。它包含像张量的Keras形状这样的东西(因此Keras可以在不询问输入形状的情况下按顺序构建层)

支持屏蔽
可能是帮助Keras构建模型和正确传播屏蔽的属性之一

但将其添加到“输入”张量中没有多大意义。掩码尚不存在,尚未添加
掩码
层,尚未添加
嵌入(…,mask_zeros=True)

我可以想象,他们可能正在使用一个“子模型”,将其添加到外部模型中。这个外部模型可能有一个掩码,它需要传递给子模型。据我所知,这应该由Keras自动处理,但我过去也听说过一些bug。也许(只是也许)他们这样做是为了处理某个Keras版本中的一个bug,允许将掩码传递给子模型