我使用一些简单的模型:如何解决神经网络的准确性成为不变的问题?
model = Sequential()
model.add(Dense(12, input_dim=len(allKeys), activation='tanh', kernel_initializer='uniform'))
model.add(Dense(31, activation='tanh'))
model.add(Dense(N, activation='relu'))
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])
model.fit(X, Y, epochs=500, batch_size=40)
X.shape(31,147) Y.shape(31,13)
在X的值是0或一些下低于1.0 。 Y是稀疏阵列,一列中的一列是1,其余列是0.
acc始终低于0.25。大部分时间只是0.12。如果我添加丢失图层,我会发现acc值会发生变化,但不会超过0.25,大多数时候只会给出更糟糕的结果。
Epoch 290/500 31/31 [==============================] - 0s - loss:9.6283 - acc:0.1290 Epoch 291/500 31/31 [==============================] - 0s - loss: 9.6283 - acc:0.1290 Epoch 292/500 31/31 [==============================] - 0s - loss :9.6283 - acc:0.1290
----------------------------更新后的代码---------- --------------------
model = Sequential()
model.add(Dense(12, input_dim=len(allKeys), activation='tanh', kernel_initializer='uniform'))
model.add(Dense(31, activation='tanh'))
model.add(Dropout(0.2))
model.add(Dense(N, activation='softmax'))
sgd = SGD(lr=0.001, momentum=0.3, decay=0.0, nesterov=False)
model.compile(optimizer=sgd,loss='categorical_crossentropy',metrics=['accuracy'])
one_hot_labels = to_categorical(Y, num_classes=N)
model.fit(X, one_hot_labels, epochs=100, batch_size=40)
此网络是否进行回归或分类?在分类的情况下有多少班? –
如果你有8个类,其准确性理论上为零,因为它可能每次都触发同一个类,尝试绘制张量板中的激活直方图和分布。什么是输入?这个架构可能太难了。 –
更新了代码,1.使用步骤0.001。 2.尝试/不辍学。 3.将最后一步从relu改为softmax。 4.用于to_category。仍然有同样的结果; – BlueDolphin