0

Google colaboratory で Keras を使用して小さなモデルを作成しました。また、TPU で学習を実行すると、間違ったメトリクスが表示されます。

もちろん、CPU/GPU で学習を実行すると、m1 および m2 メトリックは正しい数値を示します。(以下のコードを参照)

しかし、ランタイム タイプを TPU に変更した後、m1 と m2 は正しくなく、これらの値の平均のように見えます。

def m1(y_true, y_pred):
    return K.constant(10)

def m2(y_true, y_pred):
    return K.constant(20)

model = AnyModel()
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=[m1, m2])
model.fit(...)

【CPU/GPUの結果】

[=====>....] - ETA: 0s - loss: xxxxx - m1: 10.0000 - m2: 20.0000 

【TPUの結果】

[=====>....] - ETA: 0s - loss: xxxxx - m1: 14.9989 - m2: 15.0000 

CPU/GPU の結果が正しいことは明らかです。なぜこれが起こったのですか?回避策はありますか?

  • メトリクス ([m1] など) を 1 つだけ使用する場合、値は正しいです。
4

1 に答える 1