Итак, у меня возникли некоторые проблемы при попытке реализовать функцию 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.