【问题标题】:Fully Convolutional network (FCN) desired output全卷积网络 (FCN) 所需输出
【发布时间】:2018-11-28 08:09:47
【问题描述】:

我正在尝试在 MATLAB 中从头开始实现一个简单的 FCN。我在网络末端实现了 1 个输入(单通道图像)神经元、3 个隐藏层、3 个神经元和一个输出神经元,如下图所示:

我希望这个网络拥有输入图像并进行训练,以便它可以输出如下图像(左:输入,右:输出(期望)):

我想要的图像作为 FCN 的输出是否正确?网络末端是否有任何额外的必要层,以便它可以产生所需的输出?有一些解释是 FCN 产生热图,热图与期望的图像不同,如果这是正确的,如何将每次迭代的输出与期望的(反向传播的错误)进行比较?

【问题讨论】:

    标签: matlab machine-learning neural-network conv-neural-network


    【解决方案1】:

    如果你不指定损失和基本事实,它可以产生任何东西(假设它是有监督的)。

    也就是说,如果对于每个输入图像,您都有输出图像的基本事实,例如损失是 MSE(input,output),那么训练将拟合一个模型,以最小化输入之间的 MSE数据集和输出数据集。并且希望该模型的泛化能力足够强大,可以为一些任意输入产生您想要的输出。

    因此,您需要定义损失(以及监督学习的基本事实)。

    【讨论】:

    • 这是一个有监督的网络,您可以在我的问题中看到我的数据集的输入和期望输出(基本事实)的样本。我刚刚通过反转颜色并删除输入图像右上角的小点手动创建了所需的图像。目前我正在输入输入(左图)并将网络的输出与所需的(右图)进行比较。为了比较和错误,我只是这样做:期望 - networkOutPut。我的实际问题是,我可以直接将期望(显示在我的帖子中)与网络的输出进行比较,还是需要一些其他步骤?
    • 我对networkOutPut感到困惑:是来自工具箱(我没有最新版本的matlab)吗?但就“误差”而言,您需要计算您定义的损失。最简单的方法是计算所需输出与网络计算的输出之间的均方误差 (en.wikipedia.org/wiki/Mean_squared_error)。
    • networkOutPut 是我在网络中最后一个神经元的输出,我没有使用工具箱,我只是自己定义了神经元和卷积。 MSE仅用于统计均方误差的分析,不能用于反向传播。我的问题仍然是关于我的基本事实(我想要的图像),是被认为是网络的直接输出还是网络的输出需要与某种热图进行比较?!
    • 你没有听懂我说的。如果基本事实(您放入最后一层进行比较)正是您想要的,那么模型的输出就是您输出的一种方法。如果您的基本事实是热图,那么它将是您的热图的一种方法。通过“接近”是因为通常仍然存在损失(与基本事实的差异),因此并不完美。 FCN 只是一个回归模型,因此输出完全取决于您的基本事实。
    • 我明白了,你的意思是它可以使用任何类型的欲望(基本事实),所以我想要的样本是正确的。
    猜你喜欢
    • 2021-04-03
    • 2020-08-16
    • 2019-02-11
    • 2016-11-13
    • 2019-01-13
    • 2016-11-09
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    相关资源
    最近更新 更多