【问题标题】:Using Neural Networks for Data Manipulation使用神经网络进行数据处理
【发布时间】:2016-02-08 01:01:42
【问题描述】:

可能与this question 有关,但我的目标是让网络对输入图像执行操作并输出结果图像数据。

如果这个问题不够清晰,我很乐意在 cmets 中深入研究我的问题。不过,我会尽量不针对具体情况,以便让其他人使用这个问题。

问题

我有大量的训练数据,由建议的操作前后的图像组成。我的问题与如何使用 Caffe 对每个像素进行 1 对 1 训练有关。我的损失应该采取计算两幅图像之间差异的形式。

如果我的最后一个全连接/内积层输出channels * height * width,并且我有预期输出图像的标签(相同尺寸)我应该使用哪种类型的损失+准确度结构?

我的情况

我尝试使用标签数据将内积数据简单地传递给 sigmoid 交叉熵损失,但它似乎不是受支持的方法。

我的标签是非整数值,因为它们是 0 到 1 之间的像素 RGB 数据(注意:我可以使用 0 到 255 形式的整数)并且 Caffe 似乎将标签解释为类别而不是简单的值。

每个像素通道可以有 255 个类别,但这会导致 255 * 3 个通道 * 256 高度 * 256 宽度 = 50,135,040 个类别,这让我想要实现的目标过于复杂了。

我的问题

  • Caffe 本身是否支持我想要实现的目标?
    • 如果是这样,我应该如何更改我的结构以符合这些规范?
    • 如果不支持,是否有任何其他神经网络框架(例如 Torch)支持此功能?
  • 是否有我试图通过我的网络解决的问题类型的名称(当然不是分类分类)?
    • 过去使用什么来解决此类问题?

具有潜在价值的来源

【问题讨论】:

  • 交叉熵用于分类,而您的问题是(多变量)回归,请使用为此类问题定义的损失函数(如均方误差)

标签: neural-network caffe torch conv-neural-network


【解决方案1】:

您要查找的损失层是Euclidean loss layer(均方误差):

layers {
  name: "loss"
  type: EUCLIDEAN_LOSS
  top: "loss"
  bottom: "CONVX_15"
  bottom: "labels"
}

您的问题是多元回归,您必须使用适合它的损失。 Sigmoid 交叉熵损失用于分类,其中目标值(标签)必须介于 0 和 1 之间(例如,像素开/关的概率)。

使用欧几里得损失时,请小心管理梯度。将目标值保持在 范围内并使用 Xavier 权重初始化。不过,与分类问题相比,您可能需要设置较低的学习率,以防止 SGD 爆炸。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2016-11-29
    • 2020-05-16
    • 1970-01-01
    • 2023-03-16
    • 2017-08-07
    相关资源
    最近更新 更多