我的模型的准确性没有提高,不是基于验证数据集,也不是针对测试数据集。在此之前,我曾尝试过密集的层与辍学,但我有同样的问题。您能建议我任何解决方案吗?如何提高我的准确性?我应该更改模型参数,如果需要,我需要更改哪些参数?
model = Sequential()
model.add(Convolution2D(125, kernel_size=(5, 5), strides=(1, 1),padding="same", data_format="channels_last",input_shape= (100,8,1)))
#model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2), padding='same'))
model.add(Convolution2D(64, (5, 5),padding="same", activation='relu'))
model.add(Convolution2D(64, (5, 5),padding="same", activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))
model.add(Flatten())
#model.add(Dense(32, activation='relu'))
model.add(Dense(5, activation='softmax'))
sgd = SGD(lr=0.0001, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mse',
optimizer=sgd,
metrics=['accuracy'])
print(model.summary())
输出
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_16 (Conv2D) (None, 100, 8, 125) 3250
_________________________________________________________________
conv2d_17 (Conv2D) (None, 100, 8, 64) 200064
_________________________________________________________________
conv2d_18 (Conv2D) (None, 100, 8, 64) 102464
_________________________________________________________________
max_pooling2d_7 (MaxPooling2 (None, 50, 4, 64) 0
_________________________________________________________________
flatten_6 (Flatten) (None, 12800) 0
_________________________________________________________________
dense_6 (Dense) (None, 5) 64005
=================================================================
Total params: 369,783
Trainable params: 369,783
Non-trainable params: 0
_________________________________________________________________
None
Model.fit
x_train = x_train.reshape(100,100,8,1)
x_test =x_test.reshape(100,100,8,1)
model.fit(x_train, y_train,validation_split=0.20,shuffle = True,
epochs=150,
batch_size= 25)
score = model.evaluate(x_test, y_test, batch_size=25, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
print("\n%s: %.2f%%" % (model.metrics_names[1], score[1]*100))
输出
Epoch 130/150
80/80 [==============================] - 3s 37ms/step - loss: 0.0101 - acc: 0.9750 - val_loss: 0.2128 - val_acc: 0.1500
Epoch 131/150
80/80 [==============================] - 3s 37ms/step - loss: 0.0100 - acc: 0.9750 - val_loss: 0.2123 - val_acc: 0.1500
Epoch 132/150
80/80 [==============================] - 3s 37ms/step - loss: 0.0100 - acc: 0.9750 - val_loss: 0.2123 - val_acc: 0.1500
Epoch 133/150
80/80 [==============================] - 3s 36ms/step - loss: 0.0099 - acc: 0.9750 - val_loss: 0.2124 - val_acc: 0.1500
Epoch 134/150
80/80 [==============================] - 3s 37ms/step - loss: 0.0098 - acc: 0.9750 - val_loss: 0.2127 - val_acc: 0.1500
Epoch 135/150
80/80 [==============================] - 3s 37ms/step - loss: 0.0097 - acc: 0.9750 - val_loss: 0.2131 - val_acc: 0.1500
Epoch 136/150
80/80 [==============================] - 3s 38ms/step - loss: 0.0097 - acc: 0.9750 - val_loss: 0.2134 - val_acc: 0.1500
Epoch 137/150
80/80 [==============================] - 3s 39ms/step - loss: 0.0096 - acc: 0.9750 - val_loss: 0.2137 - val_acc: 0.1500
Epoch 138/150
80/80 [==============================] - 3s 39ms/step - loss: 0.0096 - acc: 0.9750 - val_loss: 0.2139 - val_acc: 0.1500
Epoch 139/150
80/80 [==============================] - 3s 38ms/step - loss: 0.0095 - acc: 0.9750 - val_loss: 0.2140 - val_acc: 0.1500
Epoch 140/150
80/80 [==============================] - 3s 37ms/step - loss: 0.0095 - acc: 0.9750 - val_loss: 0.2140 - val_acc: 0.1500
Epoch 141/150
80/80 [==============================] - 3s 37ms/step - loss: 0.0094 - acc: 0.9750 - val_loss: 0.2140 - val_acc: 0.1500
Epoch 142/150
80/80 [==============================] - 3s 40ms/step - loss: 0.0094 - acc: 0.9750 - val_loss: 0.2140 - val_acc: 0.1500
Epoch 143/150
80/80 [==============================] - 3s 38ms/step - loss: 0.0093 - acc: 0.9750 - val_loss: 0.2139 - val_acc: 0.1500
Epoch 144/150
80/80 [==============================] - 3s 37ms/step - loss: 0.0093 - acc: 0.9750 - val_loss: 0.2138 - val_acc: 0.1500
Epoch 145/150
80/80 [==============================] - 3s 41ms/step - loss: 0.0092 - acc: 0.9750 - val_loss: 0.2137 - val_acc: 0.1500
Epoch 146/150
80/80 [==============================] - 3s 42ms/step - loss: 0.0092 - acc: 0.9750 - val_loss: 0.2135 - val_acc: 0.1500
Epoch 147/150
80/80 [==============================] - 3s 40ms/step - loss: 0.0092 - acc: 0.9750 - val_loss: 0.2134 - val_acc: 0.1500
Epoch 148/150
80/80 [==============================] - 3s 43ms/step - loss: 0.0091 - acc: 0.9750 - val_loss: 0.2135 - val_acc: 0.1500
Epoch 149/150
80/80 [==============================] - 3s 38ms/step - loss: 0.0091 - acc: 0.9750 - val_loss: 0.2136 - val_acc: 0.1500
Epoch 150/150
80/80 [==============================] - 3s 38ms/step - loss: 0.0091 - acc: 0.9750 - val_loss: 0.2137 - val_acc: 0.1500
Test loss: 0.19732705876231194
Test accuracy: 0.23000000230967999
acc: 23.00%
答案 0 :(得分:0)
以下是您要更改的一些超参数:-
您还可以尝试在卷积层中更改窗口大小,也可以在Maxpooling和Conv2D层中尝试不同的填充方案