#tensorflow #generative-adversarial-network
#tensorflow #порождающая-состязательная-сеть
Вопрос:
Я использую следующую функцию для сглаживания меток в tensorflow.
tf.keras.losses.BinaryCrossentropy(from_logits=False, label_smoothing=0,
reduction=losses_utils.ReductionV2.AUTO, name='binary_crossentropy')
Если я назначу label_smoothing = 0.1, означает ли это, что он будет генерировать случайные числа от 0 до 0.1 вместо жесткой метки 0 для поддельных изображений и от 0.9 до 1 вместо 1 для реальных изображений? Я пытаюсь стабилизировать свое генеративное состязательное сетевое обучение. Спасибо.
Ответ №1:
label_smoothing = 0,1, y_true = 0,95, y_false = 0,05
label_smoothing = 1.0 , y_true = 0.5, y_false = 0.5
label_smoothing = ops.convert_to_tensor_v2(label_smoothing, dtype=K.floatx())
def _smooth_labels():
return y_true * (1.0 - label_smoothing) 0.5 * label_smoothing
y_true = smart_cond.smart_cond(label_smoothing,
_smooth_labels, lambda: y_true)
return K.mean(
K.binary_crossentropy(y_true, y_pred, from_logits=from_logits), axis=-1)