Я пытаюсь создать CNN, чтобы играть в онлайн игру. Эта игра, если быть точным:
https://www.gameeapp.com/game-bot/ibBTDViUP
Я собрал изображения и метки для каждого изображения. Эти метки сообщают сети, что нужно нажимать SPACE (выход 1) или ничего не делать (вывод 0).
Я тренирую сеть, используя Keras, вот так:
history = model.fit_generator(
train_generator,
steps_per_epoch=2000 // batch_size,
epochs=3,
validation_data=validation_generator,
validation_steps=800 // batch_size)
Сеть выглядит так:
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(275, 208, 1)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
Дело в том. В большинстве случаев сеть всегда выдает 1 или всегда ноль, даже если изображения полностью не связаны с игровыми изображениями.
Правильно ли я моделирую эту проблему?
Как я могу сделать так, чтобы сеть могла идентифицировать себя так, чтобы "не делать" ничего.
Пожалуйста, дайте мне знать, если вопрос не ясен, и заранее спасибо!