【问题标题】:Binary classification, prediction is 0二分类,预测为0
【发布时间】: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


【解决方案1】:

我终于成功了。

sigmoid 函数是从 0 到 1,所以我不能使用从 -1 到 1 的 y vectos。 然后我必须将学习率从 1e-3 降低到 1e-6。 另外,我使用 mean_square 误差而不是 binary_crossentropy。 这都解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 2020-06-25
    • 2020-01-19
    • 2022-01-16
    • 2017-08-21
    • 2019-04-12
    • 1970-01-01
    相关资源
    最近更新 更多