MNIST创建具有0~5个标签的多染色体模型(精度低)



我应该从MNIST数据中运行一个带有0,1,2,3,4,5标签的模型,并检查准确性。我也必须使用一个热编码。

这就是我得到的:

> import tensorflow as tf
from tensorflow import keras
from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train.shape
y_train.shape

y_train[0:10]
x_train_new, y_train_new = x_train[(y_train==0) | (y_train==1) | (y_train==2) | (y_train==3) | (y_train==4) | (y_train==5)], y_train[(y_train==0) | (y_train==1) | (y_train==2) | (y_train==3) | (y_train==4) | (y_train==5)]
x_train_new.shape
y_train_new.shape
y_train_new[0:10]
y_train_onehot = tf.one_hot(y_train_new, depth=6)
y_test_onehot = tf.one_hot(y_test, depth=6)
x_train_final = x_train_new.reshape((-1, 784))
x_train_final.shape
x_test_new, y_test_new = x_test[(y_test==0) | (y_test==1) | (y_test==2) | (y_test==3) | (y_test==4) | (y_test==5)], y_test[(y_test==0) | (y_test==1) | (y_test==2) | (y_test==3) | (y_test==4) | (y_test==5)]
x_test_new.shape
x_test_final = x_test_new.reshape((-1, 784))

x_train_final = x_train_final / 255
x_test_final = x_test_final / 255
model = keras.Sequential([keras.layers.Dense(1,activation='softmax')])
model.compile(optimizer="sgd",loss="categorical_crossentropy",metrics=["accuracy"])
model.fit(x=x_train_final,y=y_train_new,epochs=5)

然而,运行后的精度真的很低(0.1872(。当我试图将Dense从1更改为6时,我得到了"0";ValueError:形状(无,1(和(无,6(不兼容;。那么问题出在哪里呢?有人能帮我修复代码吗?:(TIA-

在训练模型时,没有将one_hot编码的标签传递到model.fit中。此外,现在您有6个标签(0,1,2,3,4,5(,您需要根据提供的数据集在模型的最后一层提到这些标签的类别计数。

请检查以下固定代码:

model = keras.Sequential([keras.layers.Dense(6,activation='softmax')])
model.compile(optimizer="sgd",loss="categorical_crossentropy",metrics=["accuracy"])
model.fit(x=x_train_final,y=y_train_onehot,epochs=5)

输出:

Epoch 1/5
1126/1126 [==============================] - 5s 4ms/step - loss: 0.5173 - accuracy: 0.8729
Epoch 2/5
1126/1126 [==============================] - 3s 3ms/step - loss: 0.2819 - accuracy: 0.9251
Epoch 3/5
1126/1126 [==============================] - 3s 3ms/step - loss: 0.2440 - accuracy: 0.9325
Epoch 4/5
1126/1126 [==============================] - 3s 3ms/step - loss: 0.2251 - accuracy: 0.9365
Epoch 5/5
1126/1126 [==============================] - 3s 3ms/step - loss: 0.2133 - accuracy: 0.9387
<keras.callbacks.History at 0x7f22bd00cf10>

有关更多详细信息,请参阅此类似链接。

最新更新