我在制作泰坦尼克号分类问题的 neural network,但我的训练准确率始终为0。我检查了其他解决方案,但找不到有效的解决方法。损失在减少,但准确率为0。
model= keras.Sequential( [ layers.Dense(10,activation="relu",input_shape=(8,)), layers.Dense(10,activation="relu"), layers.Dense(1,activation="sigmoid") ])model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['Accuracy'])model.fit(X_train,y_train,batch_size=64,epochs=200,verbose=2)
输入数据中没有空值。
Survived 0Age 0Fare 0Total_mem 0female 0Q 0S 02 03 0dtype: int64
以下是一些显示0准确率的值。
Epoch 1/20012/12 - 0s - loss: 0.7219 - accuracy: 0.0000e+00Epoch 2/20012/12 - 0s - loss: 0.7028 - accuracy: 0.0000e+00Epoch 3/20012/12 - 0s - loss: 0.6879 - accuracy: 0.0000e+00Epoch 4/20012/12 - 0s - loss: 0.6749 - accuracy: 0.0000e+00Epoch 5/20012/12 - 0s - loss: 0.6626 - accuracy: 0.0000e+00Epoch 6/20012/12 - 0s - loss: 0.6515 - accuracy: 0.0000e+00Epoch 7/20012/12 - 0s - loss: 0.6397 - accuracy: 0.0000e+00Epoch 8/20012/12 - 0s - loss: 0.6272 - accuracy: 0.0000e+00Epoch 9/20012/12 - 0s - loss: 0.6143 - accuracy: 0.0000e+00Epoch 10/20012/12 - 0s - loss: 0.6005 - accuracy: 0.0000e+00Epoch 11/20012/12 - 0s - loss: 0.5871 - accuracy: 0.0000e+00Epoch 12/20012/12 - 0s - loss: 0.5750 - accuracy: 0.0000e+00
回答:
首先,你错误地使用了metrics=['accuracy']
。其次,这指向了一个更深层次的错误,我认为这是无意的。我已经在tensorflow仓库上提出了一个问题。希望有人会回应。
Keras无法识别度量。Keras未能正确调用此处所需的MeanMetricWrapper。Accuracy
问题的解决方案
修复这个问题后,度量值开始显示正确的值。
from tensorflow import kerasfrom tensorflow.keras import layersX_train = np.random.random((100,8))y_train = np.random.randint(0,2,(100,))model = keras.Sequential( [ layers.Dense(10,activation="relu",input_shape=(8,)), layers.Dense(10,activation="relu"), layers.Dense(1,activation="sigmoid") ])model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])model.fit(X_train,y_train,batch_size=64,epochs=5,verbose=2)
Epoch 1/52/2 - 0s - loss: 0.6926 - accuracy: 0.5500Epoch 2/52/2 - 0s - loss: 0.6915 - accuracy: 0.5500Epoch 3/52/2 - 0s - loss: 0.6909 - accuracy: 0.5600Epoch 4/52/2 - 0s - loss: 0.6900 - accuracy: 0.5700Epoch 5/52/2 - 0s - loss: 0.6894 - accuracy: 0.5600<tensorflow.python.keras.callbacks.History at 0x7f90e5f7d250>