У меня довольно сложная сеть CNN, где у меня есть 3 разных входа и 6 выходов . Мне нужно создать функцию потерь, где один из входных данных влияет на вычисление потерь.
Я пытался пройти учебник по пользовательской функции потерь , но когда я использую вход модели в качестве параметра и используюэто в вычислениях я получаю:
NotImplementedError: Невозможно преобразовать символьный тензор (add_5: 0) в массив Numpy.
После отладки я понял, что упомянутый вводникогда не получает фактические значения, он остается тензором формы (None, None, None), в то время как Ожидаемые_y и прогнозируемые_y получают реальные формы данных (10, 46, 46, 19).
Код пользовательской функции потерь ( model param - модель, используемая в fit_generator):
def custom_loss(model):
def loss(y, gt):
# W is the background weight
W = model.inputs[-1][:, :, :, -1]
print(y.shape)
print(W.shape)
return K.sum(K.square(y - gt) * W) / c.BATCH_SIZE / 2
return loss
Могу ли я получить доступ к данным, проходящим через модель, а не только к заполнителю?