簡體   English   中英

損失為 NaN,使用激活 softmax 和損失 function categorical_crossentropy

[英]Loss is NaN using activation softmax and loss function categorical_crossentropy

我正在嘗試使這個 model 工作。 最初x.shape是 (6703, 56) 並且y.shape是具有形狀 (6703, ) 的二元列。 然后我跑

y = y.to_numpy()
y = y.astype("float32")
y = tf.keras.utils.to_categorical(y, 2)

現在y.shape是 (6703, 2)。 我跑

X_train, X_test, Y_train, Y_test = train_test_split(x, y, test_size=0.2, random_state=42)

現在

  • X_train形狀為 (5362, 56)
  • Y_train形狀為 (5362, 2)
  • X_test形狀為 (1341, 56)
  • Y_test形狀為 (1341, 2)

然后我構建 model:

model = tf.keras.models.Sequential(name="3layers")

model.add(keras.layers.Dense(N_HIDDEN,
                             input_shape=(len(X_train[0]),),
                             name="dense1",
                             activation="relu"))

model.add(keras.layers.Dropout(DROPOUT))
    
model.add(keras.layers.Dense(N_HIDDEN,
                             name="dense2",
                             activation="relu"))

model.add(keras.layers.Dropout(DROPOUT))

model.add(keras.layers.Dense(NB_CLASSES,
                             name="dense3",
                             activation="softmax"))
    
model.summary()

model.compile(optimizer="SGD",  #SGD  adam
              loss="categorical_crossentropy",
              metrics=["accuracy"])
    
model.fit(X_train, Y_train,
          batch_size=BATCH_SIZE,
          epochs=EPOCHS,
          verbose=VERBOSE,
          validation_split=VALIDATION_SPLIT)
    
test_loss, test_acc = model.evaluate(X_test, Y_test)

總結是我所期望的:

dense1 (Dense)              (None, 64)                3648      
dropout_18 (Dropout)        (None, 64)                0         
dense2 (Dense)              (None, 64)                4160      
dropout_19 (Dropout)        (None, 64)                0         
dense3 (Dense)              (None, 2)                 130    

但 output 是

Epoch 1/5
 > 429/429 [==============================] - 1s 1ms/step - loss: nan - accuracy: 0.5141 - val_loss: nan - val_accuracy: 0.4884
Epoch 2/5
 > 429/429 [==============================] - 0s 1ms/step - loss: nan - accuracy: 0.5143 - val_loss: nan - val_accuracy: 0.4884
Epoch 3/5
 > 429/429 [==============================] - 0s 987us/step - loss: nan - accuracy: 0.5143 - val_loss: nan - val_accuracy: 0.4884

我試過改變很多參數,我被卡住了。

我發現它是什么。 x 矩陣中有一些“無”值導致了問題。 刪除它們,它開始評估數字損失。 精度很差,但這將是另一個需要解決的問題。

暫無
暫無

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

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