簡體   English   中英

在 keras 調諧器中得到了 nan 但它在我訓練時有效

[英]got nan in keras tuner but it works when I train it

我對 my.network 進行了多次培訓,並且已經取得了一些成果。 然后我發現了 Keras 調諧器,想用它找到最好的超參數。 但是 tuner 的損失總是變成 nan(如果你定期訓練它就不會得到 nan)。 我使用 MobileNetv3Small 作為主干,並希望找到最佳的層數和單元。 這是我的 model 版本:

def build_model(hp):
model = keras.Sequential()
model.add(base)
# Tune the number of layers.
if hp.Boolean('globalMax'):
  model.add(layers.GlobalMaxPool2D())
model.add(layers.Flatten())
for i in range(hp.Int("num_layers", 1, 3)):
    model.add(
        layers.Dense(
            # Tune number of units separately.
            units=hp.Int(f"units_{i}", min_value=3, max_value=12, step=1),
        )
    )
if hp.Boolean("dropout"):
    model.add(layers.Dropout(rate=0.1))
model.add(layers.Dense(3))
model.compile(loss=mae, optimizer='sgd',metrics=[mae])
return model

我正在使用

 `tuner = kt.RandomSearch(
    hypermodel=build_model,
    objective="val_loss",
    executions_per_trial=2,
    overwrite=True
)`

這是 output:迄今為止最好的 val_loss:nan 總耗時:00h 02m 28s INFO:tensorflow:Oracle 觸發退出

問題是什么? 我已經檢查了任何其他優化器(但它與 .fit 完美配合),嘗試刪除丟失甚至規范化

所以我終於找到了問題所在。 發生這種情況是因為keras_tuner只是試圖用小批量找到一些驗證,在我的情況下,它將是 nan,因為數量幾乎是無限的。 在嘗試更大的批次並更改損失 function 之后,它可以擺脫一直是 Nan 並找到一些結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM