tensorflowの2.9で画像の回帰分析を行っているのですがモデルコンパイル時の
Python
1metrics=["accuracy"]
が常に 0 を返します。
そのため、カスタムメトリクスというコールバック関数が指定できるらしい?(公式リファレンスより)ので作成したのですが、
line 363, in accuracy *
result += 0.5
TypeError: Input 'y' of 'AddV2' Op has type float32 that does not match type int32 of argument 'x'.
このようなエラーメッセージが表示されます。
print文を挟んで引数を表示してみても謎のオブジェクトが渡されており、調べても解決できませんでした。
回帰問題で許容誤差を指定して正解率をaccuracyとして表示するにはどうすればいいでしょうか?
Python
1 def accuracy(y_true, y_pred): 2 result = 0 3 for i in range(len(y_pred)): 4 if abs(y_true[i] - y_pred[i]) < 0.1: 5 result += 1 6 elif abs(y_true[i] - y_pred[i]) < 0.2: 7 result += 0.5 8 return result / len(y_pred)
問題を再現できるコード一式を提供することは可能ですか?
返信ありがとうございます
可能です
https://github.com/nicoyou/AiCharacterImage
上のソースコードのai.py内のImageRegressionAiクラスに
@staticmethod
def accuracy(y_true, y_pred):
result = 0
for i in range(len(y_pred)):
if abs(y_true[i] - y_pred[i]) < 0.1:
result += 1
elif abs(y_true[i] - y_pred[i]) < 0.2:
result += 0.5
return result / len(y_pred)
を追加し
model.compile(
loss="mean_squared_error",
optimizer=tf.keras.optimizers.Adam(learning_rate=0.00001),
metrics=["accuracy"])
の"accuracy"の部分をself.accuracyに変更することで再現できます
またmain.pyに適当なデータセットを指定して
ic_ai = ai.ImageRegressionAi("test")
ic_ai.train_model("./out.csv", epochs=6, model_type=ai.ModelType.resnet_rs152_512x2_regr)
上のように読んでいただければ実行可能です
回答記入いたしました。確認お願いします
回答1件
あなたの回答
tips
プレビュー