我正在使用一些简单的模型:
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。如果我添加了dropout图层,我会看到acc值发生变化,但不会超过0.25,大部分时间都会给出更差的结果。
大纪元290/500 31/31 [==============================] - 0s - 损失:9.6283 - acc:0.1290 大纪元291/500 31/31 [==============================] - 0s - 损失:9.6283 - acc:0.1290 大纪元292/500 31/31 [==============================] - 0s - 损失: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)
答案 0 :(得分:1)
基于行
Always update snapshots
你打算做分类。如果是这种情况,则需要更改
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])
到
model.add(Dense(N, activation='relu'))
另外,确保Y向量是单热矢量。您可以为此目的使用keras to_categorical函数。
答案 1 :(得分:0)
尝试使用学习率。对于这种情况,我看起来默认值太高了。