这真的很奇怪。我正在实施这个模型:
除了我使用ImageData blob从文本文件中读取数据,batch_size:1。只有两个标签,文本文件照常组织
app/index.html
然而,Caffe只训练和测试标签0!
我使用常规工具运行caffe。
/home/.../pathToFile 0
...
/home/.../pathToFile 1
当我在pycaffe中打开网络时,我第一次收到此消息:
./build/tools/caffe train --solver=solver.prototxt
和。的大小
WARNING: Logging before InitGoogleLogging() is written to STDERR
现在是1,应该是2!
不仅如此,那个标签似乎是浮点而不是整数。
net.blobs['label'].data
我知道这之前有用过,我无法理解我做错了什么或从哪里开始排查。
答案 0 :(得分:2)
网络的输出形状取决于输入batch_size
:如果您定义batch_size: 1
,则每次都会处理单个示例,因此它只会读取一个label
。如果您将batch_size
更改为2,则caffe将读取两个样本,因此label
的形状将变为2。
这种“形状规则”的一个例外是损失输出:损失定义了一个标量函数,计算了梯度。因此,无论输入形状如何,损失输出总是标量。
关于label
的数据类型:Caffe将所有变量存储在float32
类型的“Blob”中。