Keras中的全局状态指标和序列掩码

时间:2018-08-31 17:08:42

标签: python tensorflow keras

我正在训练由N个不同长度的序列组成的数据集上的序列模型,并且该模型为每个序列中的每个步骤预测一个二进制标签。

由于数据无法一次放入内存,因此我正在使用tf.dataset API以流方式对其进行解析,并分别创建批量的 batch_size 序列。由于序列具有不同的长度,因此每个批次都会填充到该批次中最长序列的长度,因此发送到模型的张量的尺寸为(batch_size,max_sequence_length_in_batch,number_of_features)。 / p>

某些时间步骤应忽略: a)因为它们在那里仅是由于填充,或者 b)因为它们在其中一项功能中被标记为“无效”。

我正在使用遮罩层来遮盖两种类型的时间步长,以忽略它们。

问题:

1)我已经检查过Keras内部使用了掩码,以忽略损失并避免从“被掩码”的时间步中进行反向传播。在计算指标时,这些“掩盖的”时间步骤也会被忽略吗?

2)如果是这样,是否将使用类似于tf.sensitivity_at_specificityhttps://gist.github.com/vsocrates/7ff65268c2ed533a62f8f9f9d86786af的策略,通过类似于Tensorflow https://github.com/keras-team/keras/blob/master/tests/keras/metrics_test.py#L115的全局有状态度量的自定义实现来忽略它们?请注意,自定义指标只能接收y_true和y_pred作为参数,因此任何涉及掩码的操作都必须由Keras进行(例如,在调用自定义指标之前过滤掉“被掩码”的时间步长)。

0 个答案:

没有答案