【问题标题】:Converting a CNN from classification to log regression?将 CNN 从分类转换为对数回归?
【发布时间】:2018-07-05 15:58:29
【问题描述】:

我使用 tflearn 组合了一个 CNN,它根据图像从某个原始分辨率(即 50%、70% 等)的缩放比例对图像进行分类,只是为了看看我可以在这个问题上获得什么样的准确度。我是机器学习的新手,所以我认为这是开始实现让网络确定任何级别的缩放的总体目标的好方法,而不仅仅是我为分类生成的少数几个。

在获得合理的准确度后,我决定转换为模型来进行逻辑回归而不是分类,但我在理论和应用上都遇到了一些问题。首先,标签应该是什么样子?在我对 5 个不同的类使用 one-hot 数组之前,但显然这不再适用了。标签应该是比例因子(即 50% 为 0.5 等)还是其他?那么,模型本身真的应该看起来有什么不同吗?我的理解是,我真的应该只调整成本函数和反向传播/优化部分,以及将输出更改为一个值而不是五个值。再说一次,我很新,所以我很感激任何关于这方面的建议。

谢谢!

(另外,我在这里没有包含任何代码,因为我觉得这些问题很笼统,而且我的代码并没有那么特别或涉及,但是如果有人需要查看它以帮助回答/提供建议,只要问,我会在这里发布一些。)

【问题讨论】:

    标签: python tensorflow conv-neural-network logistic-regression tflearn


    【解决方案1】:

    通常在分类问题中,您的输出将使用 softmax 函数来生成“概率”。在神经网络中,要将其转换为回归方法,请移除 softmax 层并将输出维度从之前的类数 (5) 更改为 1。训练它应该会产生一个形状为 [batchsize x 1] 的向量,它可以使用包含实值比例因子的相同形状的标签将其馈送到您的损失函数中,假设这确实是模型试图预测的内容。

    【讨论】:

    • 感谢您的帮助。从你所说的看来,我所猜测的似乎是正确的方法。到目前为止,我实际投入代码的方法的唯一偏差是,虽然我确实删除了该层的 softmax 激活,但我并没有完全移除该层,我只是将激活更改为 sigmoid,但我是假设这是无论如何都需要做的?
    • 是的,你的全连接输出层应该保留,只有 softmax 应该被移除,如果不清楚,抱歉。如果您的输出将始终落在 [0,1] 范围内,则该层中的 sigmoid 非线性是可以接受的,尽管在全连接输出层中并不总是需要非线性。
    猜你喜欢
    • 1970-01-01
    • 2021-08-01
    • 2021-10-24
    • 2018-09-30
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多