我正试图建立一个CNN网络游戏。这个游戏很精确:
https://www.gameeapp.com/game-bot/ibBTDViUP
我已经为每个图像收集了图像和标签。这些标签告诉网络按空格键(输出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或总是零,即使图像完全与游戏图像无关。
我是否以正确的方式模拟这个问题?
我如何才能使网络能够识别出“不做”任何事情的最佳方式。
如果问题不清楚请告诉我,并提前感谢!