自作loss関数でエラーがでます[Python, TensorFlow, Keras]

実現したいこと

自作のloss関数を走らせたい。
(可能ならばgeneraterを使用しない手法が知りたいです。)

前提

現在医療系大学にて超解像を勉強中です。
今年度から本格的に取り組み始めた初学者です。
SSIM lossなどの自作loss関数などの作成はできましたが、
トレーニングの低画質画像をlossに含もうとするとエラーが出ます。
Python, TensorFlow, Kerasを使用。

発生している問題・エラーメッセージ

超解像の学習時に自作のloss関数でlow resolution画像を計算に含みたいができません。
本来def loss(y_true, y_pred):より高解像度画像と推論画像とでlossを計算しますが、
ここに低解像度画像を含みたいです。

tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name, tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes: [16,48,48,1] vs. [41,48,48,1] [[node loss/sub_1 (defined at \Users\PycharmProjects\DL\loss_function.py:105) ]] [Op:__inference_train_function_17330] Errors may have originated from an input operation. Input Source operations connected to node loss/sub_1: IteratorGetNext (defined at /Users/PycharmProjects/DL/RUN.py:153) Function call stack: train_function

該当のソースコード

Python

1# 前略2 3def custom_loss(x_true):4 def loss(y_true, y_pred):5 return K.mean(K.square(y_pred - y_true) + K.square(y_true - x_true))6 return loss 7 8model.compile(optimizer=Adam(lr=lr, beta_1=0.9, beta_2=0.999, epsilon=1e-8),9 metrics=[psnr], loss=[custom_loss(x_true=imagelow)])10 11training = model.fit(imagelow, imagehigh, epochs=ep, batch_size=bs,12 validation_split=vs, shuffle=True, verbose=1)13 14# 後略

試したこと

ネットでかなり調べたつもりですが、x_trueを使ってるサイトが見つかりません。
custom lossなどの作成についても調べましたが、(おそらく)batchサイズが異なることしかわかりませんでした。

補足情報(FW/ツールのバージョンなど)

Python, TensorFlow, Kerasを使用。

コメントを投稿

0 コメント