二元分类,预测值为0

2024-03-28 10:05:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在训练创建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,但它仍然不起作用。你知道吗

编辑:

数据是平衡的,但被洗牌了。 跳转和不跳转的图像数相同。你知道吗

此外,我试图使用不平衡的数据,但它最终在不同的数字为所有的图像。你知道吗


Tags: 数据图像responselocalnetworkactivationcnnmax
1条回答
网友
1楼 · 发布于 2024-03-28 10:05:04

最后,我成功了。你知道吗

sigmoid函数是从0到1,所以我不能使用y vectos从-1到1。 然后我必须把学习率从1e-3降到1e-6。 另外,我用均方误差代替了二进制交叉熵。 这些都解决了我的问题。你知道吗

相关问题 更多 >