Я пытаюсь воссоздать двоичное изображение, используя UNet
. Но метки классификации крайне искажены (~ 10% - это 0, а остальные - 1 на изображении). Таким образом, я получил weights
для каждого класса, используя skearn
. Вот что я делаю:
wts = np.array([5.76901408, 0.54744721])
class_wts = dict(enumerate(wts))
Теперь, когда я помещаю это в fit_generator
:
history_sgd = model.fit_generator(training_generator, validation_data=valid_generator, steps_per_epoch=train_steps, validation_steps=valid_steps, epochs=epochs, verbose=1, class_weight = class_wts)
, я получаю следующую ошибку:
Ошибка значения: class_weight
не поддерживается для 3+ размерных целей.
Может ли это быть из-за формы generator
? Потому что это будет иметь форму (batch_size, <image_size>)
.
Более того, когда я использую class_weight
в качестве numpy array
вместо dictionary
, код работает. Почему это происходит? Я проверил много ресурсов онлайн, но я не могу понять разницу между ними и почему формат массива numpy работает, но не словарь.