Пользовательская двоичная кросс-энтропийная потеря с помощью карты весов с использованием Keras - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть вопрос относительно реализации пользовательской функции потерь для моей нейронной сети.

В настоящее время я пытаюсь сегментировать ячейки для проекта, и я решил использовать unet, поскольку он, кажется, работает достаточно хорошо.Чтобы улучшить мою текущую модель, я решил следовать идее оригинальной статьи о unet (https://arxiv.org/abs/1505.04597), где они реализовали карту весов, назначая таким образом больший вес пикселям, расположенным между ячейками, которые тесно связаны между собой.связанные, как вы можете видеть на этой картинке: Пример карты весов .

В настоящее время я использую Keras для моего unet, и моя проблема в том, что я не знаю, как определить свои весадля моей модели без каких-либо проблем. Моя идея состояла в том, чтобы создать генератор с изображениями и двухканальным массивом, содержащим метки в первом канале и веса во втором канале, чтобы я мог легко извлекать свои веса и меткив моей пользовательской функции потерь.

Мой код выглядит так:

train_generator = zip(image_generator, label_generator, weight_generator)

    for (img, label, weight) in train_generator:
        img, label = adjustData(img, True, label)

        label_weights = np.concatenate((label, weight),axis=3)

        # This is the final generator
        yield (img, label_weights)

Как вы можете видеть, я создаю train_generator с тремя ранее созданными генераторами, я настраиваю некоторые вещи, а затем получаюмои изображения и комбинированные метки и веса.

Затем, когда я пытаюсь подогнать свою модель под fit_generator, я получаю эту ошибку: ValueError: Ошибка при проверке ввода модели: список массивов Numpy, передаваемых в вашу модель, не соответствует размеру, ожидаемому моделью.Ожидается увидеть 2 массива (ов), но вместо этого я получил следующий список из 1 массива.

Я действительно не знаю, что делать и как правильно реализовать то, что я хочу сделать.

Заранее благодарю за ответы.

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