我正在训练创建CNN来玩几何短跑。我使用AlexNet,对它稍加修改以产生-1到1之间的输出。你知道吗
当输出大于0时,它应该跳转。 当输出为<;0时,则不应执行任何操作。你知道吗
我的训练数据是一对80x60的灰度图像,值为-1或1,这表示它在这一帧应该做什么。 我有7700张照片。你知道吗
(1是跳跃)(-1是不做任何事情)
我的网络:
network = input_data(shape=[None, width, height, 1], name='input')
network = conv_2d(network, 96, 11, strides=4, activation='relu')
network = max_pool_2d(network, 3, strides=2)
network = local_response_normalization(network)
network = conv_2d(network, 256, 5, activation='relu')
network = max_pool_2d(network, 3, strides=2)
network = local_response_normalization(network)
network = conv_2d(network, 384, 3, activation='relu')
network = conv_2d(network, 384, 3, activation='relu')
network = conv_2d(network, 256, 3, activation='relu')
network = max_pool_2d(network, 3, strides=2)
network = local_response_normalization(network)
network = fully_connected(network, 4096, activation='tanh')
network = dropout(network, 0.5)
network = fully_connected(network, 4096, activation='tanh')
network = dropout(network, 0.5)
network = fully_connected(network, output, activation='sigmoid')
network = regression(network, optimizer='adam',
loss='binary_crossentropy',
learning_rate=lr, name='targets')
model = tflearn.DNN(network, checkpoint_path='model_alexnet',
max_checkpoints=1, tensorboard_verbose=2,
tensorboard_dir='log')
如果我想学习CNN,它总是预测所有输入都在0左右。你知道吗
我该怎么办?你知道吗
我想预测每一帧1或-1。你知道吗
我知道sigmoid不能达到1或-1,所以我把它从0.001移到0.999和-0.999,但它仍然不起作用。你知道吗
编辑:
数据是平衡的,但被洗牌了。 跳转和不跳转的图像数相同。你知道吗
此外,我试图使用不平衡的数据,但它最终在不同的数字为所有的图像。你知道吗
最后,我成功了。你知道吗
sigmoid函数是从0到1,所以我不能使用y vectos从-1到1。 然后我必须把学习率从1e-3降到1e-6。 另外,我用均方误差代替了二进制交叉熵。 这些都解决了我的问题。你知道吗
相关问题 更多 >
编程相关推荐