Я пытаюсь создать модель для предсказания букв и цифр капчи. , но когда я пытаюсь предсказать, я обнаружил, что все предсказания приводят только к одному классу из всех классов labels=33
. первая попытка от меня - использовать скорость обучения keras.optimizer.adam(lr=0.001)
, все прогнозы - 1
, затем я попытался изменить скорость обучения до 0,01, тогда все результаты были S, как на картинке.
![enter image description here](https://i.stack.imgur.com/meBeU.jpg)
Иногда это дает
![enter image description here](https://i.stack.imgur.com/rTHfT.jpg)
Я действительно не знаю, что является причиной этого , Я проверил данные. Мысль о моем разделении - это только один класс, но в моем случае это не так. Вот как я разделяю данные:
(X_train, X_test, Y_train, Y_test) = train_test_split(data, label, test_size=0.2, random_state=0)
lb = LabelBinarizer().fit(Y_train)
Y_train = lb.transform(Y_train)
Y_test = lb.transform(Y_test)
Это мои классы данных для проверки дисбаланса:
(array(['1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S',
'T', 'U', 'V', 'W', 'X', 'Y', 'Z'], dtype='<U1'),
array([8286, 6393, 6332, 6316, 6427, 6173, 6699, 6404, 6956, 6272, 6331,
6353, 6328, 6607, 6250, 6396, 6466, 5985, 6421, 6314, 6196, 6502,
6542, 6417, 6435, 6421, 6396, 6341, 6107, 6131, 6360, 6383, 6457]))
и затем я применил эту модель:
model=Sequential()
# First convolutional layer with max pooling
model.add(Conv2D(100, (5, 5), padding="same", input_shape=(40, 40, 1), activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
# Second convolutional layer with max pooling
model.add(Conv2D(200, (5, 5), padding="same", activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
# Second convolutional layer with max pooling
model.add(Conv2D(200, (5, 5), padding="same", activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
# Hidden layer with 500 nodes
model.add(Flatten())
model.add(Dense(500, activation="relu"))
model.add(Dense(33, activation="softmax"))
# Ask Keras to build the TensorFlow model behind the scenes
optimizer = keras.optimizers.adam(lr=0.01)
model.compile(loss="categorical_crossentropy", optimizer=optimizer, metrics=["accuracy"])
model.fit(X_train, Y_train, validation_data=(X_test, Y_test), batch_size=128, epochs=10, verbose=1)
Я думаю о:
проблема расщепления? выпечка? ошибка кода? Я запускаю модель в зависимости от модели этого примера здесь:
ссылка модели кода
Я заблокирован в этой части около 1 недели и не сделал ' найти решение