[英]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.