我有形状为(108885,128)的火车数据集:
>print(features)
array([[155, 22, 159, ..., 117, 134, 255],
[149, 17, 160, ..., 125, 84, 255],
[149, 21, 157, ..., 98, 49, 255],
...,
[159, 35, 136, ..., 3, 0, 255],
[150, 28, 111, ..., 0, 0, 255],
[149, 30, 107, ..., 0, 0, 255]], dtype=uint8)
我还具有形状为(108885,5)的一键编码标签(5类):
>print(one_hot_labels)
array([[0., 0., 1., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 1., 0., 0.],
...,
[0., 0., 1., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 1., 0., 0.]], dtype=float32)
我正在尝试拟合简单的keras模型:
model = Sequential()
model.add(Dense(64, input_shape=features[0].shape, activation="tanh"))
model.add(Dense(5, activation="softmax"))
model.compile(optimizer=SGD(lr=0.001, decay=1e-6, momentum=0.9, nesterov=True), loss="categorical_crossentropy", metrics=["accuracy"])
model.fit(features, one_hot_labels, epochs=10, batch_size=32, validation_split=0.33)
我在第一个密集层上尝试了许多不同的激活函数(S型,tanh,linear(!),relu),不同的学习率,衰减和历元数。但是每次我在第一个时期之后都没有合适的进步时(例如):
Epoch 1/10
72952/72952 [==============================] - 3s 42us/step - loss: 5.6170 - acc: 0.6515 - val_loss: 5.8685 - val_acc: 0.6359
Epoch 2/10
72952/72952 [==============================] - 2s 32us/step - loss: 4.9206 - acc: 0.6947 - val_loss: 5.8685 - val_acc: 0.6359
Epoch 3/10
72952/72952 [==============================] - 2s 33us/step - loss: 4.9206 - acc: 0.6947 - val_loss: 5.8685 - val_acc: 0.6359
Epoch 4/10
72952/72952 [==============================] - 2s 32us/step - loss: 4.9206 - acc: 0.6947 - val_loss: 5.8685 - val_acc: 0.6359
Epoch 5/10
72952/72952 [==============================] - 2s 33us/step - loss: 4.9206 - acc: 0.6947 - val_loss: 5.8685 - val_acc: 0.6359
我知道这是错误的行为,但我不知道是什么原因。您能帮我理解这个问题吗?
答案 0 :(得分:1)
显然,该问题已通过按照@AmirHadifar in the comments的建议对输入数据进行标准化来解决。
注意:根据accepted answer的"Question with no answers, but issue solved in the comments (or extended in chat)"中的建议,此答案作为社区Wiki发布。