这是一个算法,我用来分类一个图片类-跑步鞋,铅笔和书。然而,在3000张乱序图像上运行算法后(这就是我的全部),我注意到:
每一个时代的val_精度相同,等于0.3400
当我打印我自己拍摄的6幅图像的预测结果时,当它应该返回一个数值时,结果数组如下所示: [[1.][1.][1.][1.][1.][1.]]
因为它总是1,所以它总是会对我的每一张图片,比如我的书,预测相同的类。
我像另一篇帖子建议的那样进行了一次测试,用1000个跑鞋和铅笔样本和一本书样本进行训练。结果仍然是书,永远。
算法:
model = Sequential()
model.add(Conv2D(64,(3,3), input_shape = X_train.shape[1:]))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(64,3,3))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Dense(1))
model.add(Activation('softmax'))
model.compile(loss="binary_crossentropy",
optimizer="adam",
metrics=['accuracy'])
model.fit(X_train, y_train, batch_size=24, epochs=3, validation_split=0.1)
predictions = model.predict(X_test)
输出(2692个样本,因为有些是错误)
Train on 2692 samples, validate on 300 samples
Epoch 1/3
2692/2692 [==============================] - 17s 6ms/sample - loss: -0.0171 - accuracy: 0.3354 - val_loss: -0.5111 - val_accuracy: 0.3400
Epoch 2/3
2692/2692 [==============================] - 20s 8ms/sample - loss: -0.0171 - accuracy: 0.3354 - val_loss: -0.5111 - val_accuracy: 0.3400
Epoch 3/3
2692/2692 [==============================] - 21s 8ms/sample - loss: -0.0171 - accuracy: 0.3354 - val_loss: -0.5111 - val_accuracy: 0.3400
运行“打印(预测)”时,结果是: [[1.][1.][1.][1.][1.][1.]]
非常感谢。
1条答案
按热度按时间xsuvu9jc1#
由于您试图将数据分为3类,因此模型的顶层应该是
您不显示如何生成x-train和y_-train的代码。若y_序列是一个热编码序列,那个么model.compile的代码应该是
如果y_序列是整数,则model.compile应为