使用神经网络进行数据处理
Using Neural Networks for Data Manipulation
可能与 有关,但我的目标是让网络对输入图像执行操作并输出结果图像数据。
如果这个问题不够清晰,我很乐意在评论中更深入地研究我的问题的细节。但是,我会尽量不针对具体情况,以便让其他人可以使用这个问题。
问题
我有大量训练数据,其中包含建议操作前后的图像。我的问题涉及如何使用 Caffe 对每个像素进行 1 对 1 训练。我的损失应该采取计算两幅图像之间差异的形式。
如果我有最后一个 fully-connected/inner-product 层输出 channels * height * width
并且我有预期输出图像的标签(相同尺寸)我应该使用哪种类型的损失+精度结构?
我的案例
我试过简单地将内积数据传递给带有我的标签数据的 S 型交叉熵损失,但它似乎不是一种受支持的方法。
我的标签是非整数值,因为它们是 0 到 1 之间的像素 RGB 数据(注意:我可以使用 0 到 255 形式的整数)并且 Caffe 似乎将标签解释为类别而不是简单的值。
我可以为每个像素通道设置 255 个类别,但这会导致 255 * 3 个通道 * 256 高度 * 256 宽度 = 50,135,040 个类别,这使我想要实现的目标变得过于复杂。
我的问题
- Caffe 本身是否支持我想要实现的目标?
- 如果是这样,我应该如何更改我的结构以符合这些规范?
- 如果不支持,其他神经网络框架(例如 Torch)是否支持此功能?
- 是否有我试图用我的网络解决的问题类型的名称(当然不是绝对分类)?
- 过去用什么来解决这种类型的问题?
具有潜在价值的来源
您要查找的损失层是Euclidean loss layer(均方误差):
layers {
name: "loss"
type: EUCLIDEAN_LOSS
top: "loss"
bottom: "CONVX_15"
bottom: "labels"
}
你的问题是多元回归,你必须使用适合它的损失。 Sigmoid 交叉熵损失 用于分类,其中目标值(标签)必须介于 0 和 1 之间(例如,像素为 on/off 的概率)。
对于欧氏损失,请小心管理梯度。将目标值保持在 <0,1> 范围内并使用 Xavier 权重初始化。不过,与分类问题相比,您可能需要设置较低的学习率,以防止 SGD 爆炸。
可能与
如果这个问题不够清晰,我很乐意在评论中更深入地研究我的问题的细节。但是,我会尽量不针对具体情况,以便让其他人可以使用这个问题。
问题
我有大量训练数据,其中包含建议操作前后的图像。我的问题涉及如何使用 Caffe 对每个像素进行 1 对 1 训练。我的损失应该采取计算两幅图像之间差异的形式。
如果我有最后一个 fully-connected/inner-product 层输出 channels * height * width
并且我有预期输出图像的标签(相同尺寸)我应该使用哪种类型的损失+精度结构?
我的案例
我试过简单地将内积数据传递给带有我的标签数据的 S 型交叉熵损失,但它似乎不是一种受支持的方法。
我的标签是非整数值,因为它们是 0 到 1 之间的像素 RGB 数据(注意:我可以使用 0 到 255 形式的整数)并且 Caffe 似乎将标签解释为类别而不是简单的值。
我可以为每个像素通道设置 255 个类别,但这会导致 255 * 3 个通道 * 256 高度 * 256 宽度 = 50,135,040 个类别,这使我想要实现的目标变得过于复杂。
我的问题
- Caffe 本身是否支持我想要实现的目标?
- 如果是这样,我应该如何更改我的结构以符合这些规范?
- 如果不支持,其他神经网络框架(例如 Torch)是否支持此功能?
- 是否有我试图用我的网络解决的问题类型的名称(当然不是绝对分类)?
- 过去用什么来解决这种类型的问题?
具有潜在价值的来源
您要查找的损失层是Euclidean loss layer(均方误差):
layers {
name: "loss"
type: EUCLIDEAN_LOSS
top: "loss"
bottom: "CONVX_15"
bottom: "labels"
}
你的问题是多元回归,你必须使用适合它的损失。 Sigmoid 交叉熵损失 用于分类,其中目标值(标签)必须介于 0 和 1 之间(例如,像素为 on/off 的概率)。
对于欧氏损失,请小心管理梯度。将目标值保持在 <0,1> 范围内并使用 Xavier 权重初始化。不过,与分类问题相比,您可能需要设置较低的学习率,以防止 SGD 爆炸。