首页 > 解决方案 > 目标结构会影响神经网络性能吗?

问题描述

我正在构建一个 CNN 来控制视频游戏中的车辆。网络将屏幕截图作为输入,并使用控制器值作为目标。现在我只使用两个控制器值作为目标:-1 和 1 之间的值的转向,以及 0 和 1 之间的油门。我已将转向的值四舍五入为 7 个值,油门为4 个值给了我 28 个不同的类,我将平衡它们(舍入的原因是难以平衡未分类的类)。

我的问题是我是否应该使用单个值目标 1-27(每种情况一个)来训练网络,还是应该使用两个圆形控制器值作为目标(一个数组:[转向,油门])?我知道两者都创建了 28 个目标类,但是目标输出的结构会影响网络的性能吗?这些选项中的一个明显优于另一个吗?

初步测试模型:

'''

model = Sequential()

model.add(Conv2D(24, kernel_size=(5, 5), strides=(2, 2), activation='relu', input_shape= INPUT_SHAPE))
model.add(Conv2D(36, kernel_size=(5, 5), strides=(2, 2), activation='relu'))
model.add(Conv2D(48, kernel_size=(5, 5), strides=(2, 2), activation='relu'))
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(Flatten())
model.add(Dense(1164, activation='relu'))
drop_out = 1 - keep_prob
model.add(Dropout(drop_out))
model.add(Dense(100, activation='relu'))
model.add(Dropout(drop_out))
model.add(Dense(50, activation='relu'))
model.add(Dropout(drop_out))
model.add(Dense(10, activation='relu'))
model.add(Dropout(drop_out))
model.add(Dense(OUT_SHAPE, activation='softsign'))

'''

标签: pythonneural-networkconv-neural-network

解决方案


推荐阅读