[英]ValueError in `categorical_crossentropy` loss function: shape issue
[英]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.