что функция Focal Loss не улучшает запоминание в моем эксперименте? - PullRequest
0 голосов
/ 05 мая 2020

Я попытался протестировать функцию фокальных потерь, чтобы решить проблему дисбаланса классов. Я использовал пример обнаружения мошеннической карты, доступный здесь (https://www.tensorflow.org/tutorials/structured_data/imbalanced_data). Но вопреки ожиданиям, полученный отзыв (0,46) слаб по сравнению с версией с взвешенной кросс-энтропией (отзыв = 0,9). Не понимаю такой результат, и в чем может быть проблема. если у кого есть решение ...

Код:

import tensorflow_addons as tfa

METRICS = [
      keras.metrics.TruePositives(name='tp'),
      keras.metrics.FalsePositives(name='fp'),
      keras.metrics.TrueNegatives(name='tn'),
      keras.metrics.FalseNegatives(name='fn'), 
      keras.metrics.BinaryAccuracy(name='accuracy'),
      keras.metrics.Precision(name='precision'),
      keras.metrics.Recall(name='recall'),
      keras.metrics.AUC(name='auc'),
]

def make_model(metrics = METRICS, output_bias=None):
  if output_bias is not None:
    output_bias = tf.keras.initializers.Constant(output_bias)
  model = keras.Sequential([
      keras.layers.Dense(
          16, activation='relu',
          input_shape=(train_features.shape[-1],)),
      keras.layers.Dropout(0.5),
      keras.layers.Dense(1, activation='sigmoid',
                         bias_initializer=output_bias),
  ])

  fl = tfa.losses.SigmoidFocalCrossEntropy()
  model.compile(
      optimizer=keras.optimizers.Adam(lr=1e-3),
      loss=fl,
      metrics=metrics)

  return model

model = make_model()
model.load_weights(initial_weights)
baseline_history = model.fit(
    train_features,
    train_labels,
    batch_size=BATCH_SIZE,
    epochs=EPOCHS,
    callbacks = [early_stopping],
    validation_data=(val_features, val_labels))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...