#tensorflow #keras #conv-neural-network #loss-function
#tensorflow #keras #conv-нейронная сеть #функция потерь
Вопрос:
В задаче сегментации я хотел, чтобы моя модель имела два вывода, потому что я реализовал весовые карты, как это было предложено в оригинальной статье U-net https://arxiv.org/pdf/1505.04597.pdf .
Согласно предложению, я создал weightmaps, сконцентрировав часть основной маски истинности, чтобы иметь более высокие веса. Теперь у меня есть модель с.
weightmap=layers.Lambda(lambda x:x)(weight_map) # A non trainable layer to output this as tensor for loss function
Model=model(inputs=[input,weight_map], outputs=[output,weightmap]
Теперь мне нужно вычислить двоичную перекрестную потерю энтропии для следующей модели
def custom_loss(target,outputs):
loss=K.binary_crossentropy(target,outputs[0]) #ouputs[0] should be the model output
loss=loss*outputs[1] #outputs[1] should be weightmaps
return loss
Этот вывод [0] и вывод [1] нарезки выходного тензора из модели не работает.
Могу ли я что-нибудь сделать, чтобы реализовать следующее с обоими выходами модели в одной функции потерь?
Комментарии:
1. Можете ли вы уточнить «тензор вывода из модели не работает»? Вы получаете какую-либо ошибку?
2. @Srivathsa Вычисление потерь было вне графика модели. Итак, нарезка выходного тензора не работает, хотя моя модель имеет два выхода (т. Е. Значения нарезанного тензора не соответствуют выходным данным и карте веса), и я не могу понять, почему. Но я нашел обходной путь для введения этих весовых карт, вычислив потери внутри графика модели. Но не смог найти решение для этого.