class_weight в fit_generator как np.array или словарь? - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь воссоздать двоичное изображение, используя 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 работает, но не словарь.

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