【发布时间】:2018-03-12 09:28:09
【问题描述】:
我正在训练创建 CNN 来玩几何冲刺。我使用 AlexNet,它稍作修改以产生 -1 到 1 之间的输出。
当输出> 0 时它应该跳转。 当输出
我的训练数据是 80x60 灰度图像对,其值为 -1 或 1 ,这表明它在这一帧应该做什么。 我有 7700 张图片。
(1 是跳跃)(-1 是什么都不做)
我的 AlexNet:
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,但它仍然不起作用。
编辑:
数据是平衡的,但被打乱了。 跳跃和不跳跃的相同数量的图像。
此外,我尝试使用不平衡的数据,但所有图像的结尾数字不同。
【问题讨论】:
-
如果你有相同数量的跳跃和非跳跃,每节课将达到 3850。我认为这还不够,请尝试迁移学习或数据增强
-
如果我添加更多数据,它会更接近 0。
-
不要使用 sigmoid 单元,而是使用带有标签的一种热表示的 softmax。那么您可以使用简单的映射到 -1 和 1 的输出。
标签: python tensorflow conv-neural-network tflearn