因此,正如标题所示,我的问题是我的模型停滞在0.33左右的精度上。
我的模型由cnn层和3个密集层组成,其过程如下:
model = Sequential()
model.add(Conv2D(16, kernel_size=(3, 3), input_shape=(580, 360, 1), padding='same', activation='relu'))
model.add(BatchNormalization())
model.add(Conv2D(16, kernel_size=(3, 3), activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.2))
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Flatten()) # Flattening the 2D arrays for fully connected layers
model.add(Dense(512, activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.2))
model.add(Dense(364, activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.2))
model.add(Dense(266, activation='softmax'))
optimizer = keras.optimizers.SGD(lr=0.00001) # I've tried with default as well as with bigger lr
model.compile(optimizer='SGD', loss='categorical_crossentropy', metrics=['accuracy'])
history = model.fit(trainDataset, epochs=40)
我尝试使用默认值以及更高的学习率。我尝试过使用不同的优化程序以及在Conv2D
和更少/更多Conv2D
上的不同步伐。我不确定,尽管我不确定,但这种指标和损失函数应该是最合适的。
这是它的结局:
205/209 [============================>.] - ETA: 0s - loss: 2.3203 - accuracy: 0.3491
206/209 [============================>.] - ETA: 0s - loss: 2.3203 - accuracy: 0.3491
207/209 [============================>.] - ETA: 0s - loss: 2.3203 - accuracy: 0.3491
208/209 [============================>.] - ETA: 0s - loss: 2.3202 - accuracy: 0.3490
209/209 [==============================] - 52s 248ms/step - loss: 2.3193 - accuracy: 0.3491
有人有什么建议吗?
另外,如何找到最合适的batch_size
和最合适的kernel_size
/ strides
?
谢谢!
版本:
Keras:2.3.1 Tensorflow-GPU:2.0.0 CUDA:10.1 的Python:3.7