Я пытаюсь вычислить метрику PSNR для моей модели convnet автоэнкодера keras. Однако я сталкиваюсь с ошибкой. Пожалуйста, помогите проверить и устранить проблему. Спасибо
import math
from keras import backend as K
def PSNR(y_true, y_pred):
max_pixel = 1.0
return 10.0 * math.log10((max_pixel ** 2) / (K.mean(K.square(y_pred -
y_true))))
adam = optimizers.Adam(lr=0.0001)
autoencoder.compile(loss='mse', metrics=[PSNR], optimizer=adam)
Полный возврат:
Traceback (последний вызов был последним):
Файл "", строка 1, в
autoencoder.compile (потеря = 'mse', метрика = [PSNR], оптимизатор = adm)
Файл "C: \ Users \ LW \ Anaconda3 \ envs \ tenorflow_demo \ lib \ site-packages \ keras \ engine \ training.py", строка 451, в компиляции
handle_metrics (output_metrics)
Файл "C: \ Users \ LW \ Anaconda3 \ envs \ tenorflow_demo \ lib \ site-packages \ keras \ engine \ training.py", строка 420, в handle_metrics
маска = маска [I])
Файл "C: \ Users \ LW \ Anaconda3 \ envs \ tenorflow_demo \ lib \ site-packages \ keras \ engine \ training_utils.py", строка 404, во взвешенном
score_array = fn (y_true, y_pred)
Файл "", строка 8, в PSNR
возвращение 10,0 * math.log10 ((max_pixel ** 2) / (K.mean (K.square (y_pred - y_true))))
TypeError: должно быть действительным числом, а не Tensorr
пожалуйста, дайте мне знать, как решить эту проблему