有人能帮助我理解在MultiHeadAttention中遮罩3D输入(技术上是4D)吗?
我的原始数据集由以下形式的时间序列组成:
输入:(samples, horizon, features)
~〉(8, 4, 2)
~〉K, V, Q during inference
目标:(samples, horizon, features)
~〉(8, 4, 2)
~〉Q during training
Labels:健康生活篇
实际上,我取了时间序列数据的8个样本,最终以相同的格式输出1个样本。目标是输入的水平移位值,并馈入仅编码器的Transformer模型(如上所示的Q, K, V
)。
为了最佳地近似单个输出样本(这与Targets中的最后一个样本相同),我需要对每个样本的水平线和样本之间的因果关系进行充分关注。一旦数据通过编码器运行,它将被发送到EinsumDense层,该层将(8, 4, 2)
编码器输出减少为(1, 4, 2)
。为了使所有这些工作正常进行,我需要在我的数据上注入第四维,因此Inputs和Targets的格式为(1, 8, 4, 2)
。
那么,我的实际问题是,如何为编码器生成掩蔽?在对错误进行了一些挖掘后,我注意到MHA用于掩蔽softmax的Tensor形状的格式为(1, 1, 8, 4, 8, 4)
,这使我相信它是(B, H, TS, TH, SS, SH)
,其中:B
=批次H
=磁头TS
=目标样本TH
=目的层位SS
=源样本SH
=震源层位
我从the docs中得到这个概念只是因为attention_output
的描述:
...其中T代表靶序列形状
假设情况是这样,下面是一个合理的掩码,还是有更合适的方法:
sample_mask = tf.linalg.band_part(tf.ones((samples, samples)), -1, 0)
horizon_mask = tf.ones((horizon, horizon))
encoder_mask = (
sample_mask[:, tf.newaxis, :, tf.newaxis]
* horizon_mask[tf.newaxis, :, tf.newaxis, :]
)
1条答案
按热度按时间fslejnso1#
它是掩蔽的,你可以想象它,因为数据包含在许多时尚没有错,但我试图使用Tensorflow方法,请查看结果,他们是在相同的维度。Tensorflow Masking layer
样本:简单相同的掩蔽值与目标形状你成为解决方案的观察者,证明与眼睛时尚改善治理.
输出:输入我们从表匹配特征创建的Tensor。
输出:问题掩码方法.
输出:掩膜层= tf. keras. layers.掩膜(掩膜值= 50,输入形状=(n_horizon,n_features))
第一次