

この投稿は米国版stack
overflowとのマルチポストです．[リンク先](https://stackoverflow.com/questions/65456331/loss-
diverges-on-tpu)

[このモデル](https://gist.github.com/yuntan/8198f80593b6897844236c5a5a7b07da)
をGPUとTPUでそれぞれ初期化し，1epoch訓練させました．同じデータセット，同じ誤差関数を指定しているにも関わらず，推論結果が異なったものになりました．TPUでは誤差が発散（NaN）してしまいます．

どのようにしたら誤差を有限に留め、GPUの場合のように真っ黒ではない何らかの画像が推論させられるでしょうか。

このモデルでは80000
epoch程度で元画像からGTの結果が得られることを期待しています。入力とGTをよく見比べると、入力の画像はGTに比べてブレていることがわかると思います。

訓練コードは以下のとおりです．

GPU：

[code]

    model = deblurnet()
    model.compile(optimizer="adam",
                  loss="categorical_crossentropy",
                  metrics=["accuracy"])
    model.fit(train_ds, epochs=1)
    output = model.predict(input)
    
[/code]

TPU：

[code]

    with tpu_strategy.scope():
        model = deblurnet()
        model.compile(optimizer="adam",
                      loss="categorical_crossentropy",
                      metrics=["accuracy"])
    model.fit(train_ds, epochs=1)
    output = model.predict(input)
    
[/code]

### 結果

GPUの場合：

[![画像の説明をここに入力](https://i.stack.imgur.com/irMec.png)](https://i.stack.imgur.com/irMec.png)

TPUの場合：

[![画像の説明をここに入力](https://i.stack.imgur.com/tvOXd.png)](https://i.stack.imgur.com/tvOXd.png)


CC BY-SA 4.0
2020-12-28T07:16:13.267
72941
2020-12-28T12:36:58.960
2020-12-28T12:36:58.960
19110
8099
question
tensorflow
TPUで訓練すると誤差が発散する