Неверная ошибка состояния ленты в Keras из-за пользовательской функции metri c - PullRequest
0 голосов
/ 22 февраля 2020

Итак, у меня возникли некоторые проблемы при попытке реализовать функцию metri c на основе SSIM в Keras.

Моя функция metri c:

@tf.function
def custom_ssim(y_actual, y_predicted):

    y_pred_aux = tf.argmax(y_predicted, axis=-1)
    y_pred_aux = tf.expand_dims(y_pred_aux, axis=3)
    y_pred_aux = tf.cast(y_pred_aux, np.float64)

    y_actual_aux = tf.argmax(y_actual, axis=-1)
    y_actual_aux = tf.expand_dims(y_actual_aux, axis=3)
    y_actual_aux = tf.cast(y_actual_aux, np.float64)

    return 1 - tf.image.ssim(y_actual_aux, y_pred_aux, max_val=7)

При попытке скомпилировать мою модель появляется следующее сообщение об ошибке:

InternalError: недопустимое состояние ленты.

Я уже пытался не использовать @tf.function decorator, только чтобы получить следующее сообщение об ошибке:

ValueError: Градиенты не указаны для любой переменной: ['conv0 / kernel: 0', 'conv0 / bias: 0', 'conv1 / kernel : 0 ',' conv1 / bias: 0 ',' conv2 / kernel: 0 ',' conv2 / bias: 0 ',' conv3 / kernel: 0 ',' conv3 / bias: 0 ',' conv4 / kernel: 0 ',' conv4 / bias: 0 ',' deconv0 / kernel: 0 ',' deconv0 / bias: 0 ',' deconv1 / kernel: 0 ',' deconv1 / bias: 0 ',' deconv2 / kernel: 0 ', 'deconv2 / bias: 0', 'deconv3 / kernel: 0', 'deconv3 / bias: 0', 'deconv4 / kernel: 0', 'deconv4 / bias: 0'].

Попытка преобразовать Tensors в функции в массив NumPy с .numpy() также не сработала.

Я использую Tensorflow-GPU 2.0 и * 1 026 * 3,6.

...