【发布时间】:2023-01-16 12:01:07
【问题描述】:
tf.keras.layers.Masking 层在其__init__(...) 中将_compute_output_and_mask_jointly 设置为True,除了告诉它在其call(...) 中正在做什么之外,该属性还做了什么?
def __init__(self, mask_value=0., **kwargs):
...
self._compute_output_and_mask_jointly = True
另外,mask已经在call(...)创建并应用。 compute_mask(...)的目的是什么?显得多余。
def compute_mask(self, inputs, mask=None):
return tf.reduce_any(tf.not_equal(inputs, self.mask_value), axis=-1)
def call(self, inputs):
boolean_mask = tf.reduce_any(
tf.not_equal(inputs, self.mask_value), axis=-1, keepdims=True)
outputs = inputs * tf.cast(boolean_mask, inputs.dtype)
# Compute the mask and outputs simultaneously.
outputs._keras_mask = tf.squeeze(boolean_mask, axis=-1) # pylint: disable=protected-access
return outputs
【问题讨论】:
标签: tensorflow keras masking