Caffe 重塑零点

Caffe reshape zeros

我是 Caffe 的新手,也许我做错了什么或者理解了其他东西。

我正在 Caffe 中创建我的第一个脚本,我尝试使用具有相同参数的重塑获得与输出相同的输入,我在输出中获得相同的大小,但都是零。

我试过这个 prototxt 文件:

name: "copying"
layer {
    name: "input"
    type: "Input"
    top: "input"
    input_param { shape: { dim: 1 dim: 1 dim: 2 dim: 2 } }
}
layer {
    name: "data"
    type: "Reshape"
    bottom: "input"
    top: "data"
    reshape_param { shape: { dim: 1 dim: 1 dim: 2 dim: 2 } }
}
name: "copying"
input: "input"
input_dim: 1
input_dim: 1
input_dim: 2
input_dim: 2
layer {
    name: "data"
    type: "Reshape"
    bottom: "input"
    top: "data"
    reshape_param { shape: { dim: 0 dim: 0 dim: 0 dim: 0 } }
}

这是我的代码:

var input = new Mat(new[] {1, 1, 2, 2}, MatType.CV_8S, new byte[] { 1, 2, 3, 4 });
using var net = OpenCvSharp.Dnn.Net.ReadNetFromCaffe("copying.prototxt");
net.SetInput(input);

using var output = net.Forward();

我也试过使用名字

var input = new Mat(new[] {1, 1, 2, 2}, MatType.CV_8S, new byte[] { 1, 2, 3, 4 });
using var net = OpenCvSharp.Dnn.Net.ReadNetFromCaffe("copying.prototxt");
net.SetInput(input, "input");

using var output = net.Forward("data");

这是输入和输出

[1,2,3,4]
[0,0,0,0]

我发现了问题,无论输入层是MatType.CV_8S结果是MatType.CV_32FC1 ,所以当结果数组被解析时应该被转换为 float.