пользовательская функция потерь для нескольких выходов выдает ошибку - PullRequest
0 голосов
/ 14 марта 2020
x = sliced_model.output
outputMap = Convolution2D(1, (1, 1), activation='sigmoid')(x)
x = Flatten()(outputMap)
binaryOutput = Dense(1, activation='sigmoid')(x)
ourModel = Model(inputs=sliced_model.input, outputs=[outputMap, 
binaryOutput])

def customloss(y_true, y_pred):
    map_true, binary_true = y_true
    map_pred, binary_pred = y_pred
    landa = 0.5
    binaryOutput_loss = k.losses.binary_crossentropy(binary_true, binary_pred) 
    binaryMap_loss = k.mean(keras.losses.binary_crossentropy(map_true, map_pred))
    return binaryOutput_loss * landa + (1-landa) * binaryMap_loss
ourModel.compile(loss=customloss, optimizer='adam', metrics=['accuracy'])

TypeError: Тензорные объекты могут повторяться, только если включено активное выполнение. Чтобы перебрать этот тензор, используйте tf.map_fn.

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