Python 在KERA中的多对一RNN中使用时态类权重

Python 在KERA中的多对一RNN中使用时态类权重,python,tensorflow,keras,rnn,Python,Tensorflow,Keras,Rnn,我有一个模型,它使用几个多对多RNN层,然后是单个多对一层和一对一解码层 因此,第一个RNN层使用参数return\u sequences=True,第二个RNN层使用return\u sequences=False 到目前为止,这是可行的,但当我添加样本权重时,它会崩溃。如果我有一个常规的多对多网络,我只需在编译函数中设置sample_weight_mode=temporal,并将权重定义为2d矩阵 然而,在我的多对一案例中,这不起作用,因为我得到了一个错误,即时间权重期望输出中有一个时间维度

我有一个模型,它使用几个多对多RNN层,然后是单个多对一层和一对一解码层

因此,第一个RNN层使用参数return\u sequences=True,第二个RNN层使用return\u sequences=False

到目前为止,这是可行的,但当我添加样本权重时,它会崩溃。如果我有一个常规的多对多网络,我只需在编译函数中设置sample_weight_mode=temporal,并将权重定义为2d矩阵

然而,在我的多对一案例中,这不起作用,因为我得到了一个错误,即时间权重期望输出中有一个时间维度。我意识到这可能是因为我的解码层不再是时间的多对一。但我不能使用非时间权重运行网络,因为这不能与多对多层一起工作

对于混合多对多和多对一层的样品重量,是否有解决方案

下面是我的模型,希望能澄清一点:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
the_input (InputLayer)       (None, 20, 249)           0         
_________________________________________________________________
masking_1 (Masking)          (None, 20, 249)           0         
_________________________________________________________________
time_distributed_1 (TimeDist (None, 20, 64)            16000     
_________________________________________________________________
relu (Activation)            (None, 20, 64)            0         
_________________________________________________________________
simple_rnn_1 (SimpleRNN)     (None, 20, 16)            1296      
_________________________________________________________________
simple_rnn_2 (SimpleRNN)     (None, 16)                528       
_________________________________________________________________
dense_2 (Dense)              (None, 36)                612       
_________________________________________________________________
softmax (Activation)         (None, 36)                0         
=================================================================
TL;DR-只需将“采样重量”模式设置为“无”

但我不能使用非时间权重运行网络,因为这不能与多对多层一起工作

这句话让我觉得你实际上不明白样本权重应该做什么。 发件人:

样本权重:训练样本的可选权重Numpy数组,用于对损失函数进行加权

这意味着您的样本权重将仅用于损失函数,并且在较新版本中,也将用于加权度量。由于损失函数只是输出的函数,我看不出依赖于时间的中间层会影响任何东西的原因


如果每个时间序列只有一个输出,那么示例就是整个时间序列,而不是每个时间步。因此,使您的样本重量与您将用于MLP的样本重量相同,例如

您是对的,当然,这是我的错误。出于某种原因,我的印象是权重应用于网络的每一层。但显然,这只与计算加权误差有关,加权误差随后通过网络反向传播。