我在我的caffe网络中使用自定义骰子丢失层进行二值图像分割。当我使用caffe命令行训练它时,一切正常:
$ caffe train -solver solver.prototxt
确实收敛了。但是当我尝试使用python包装器训练相同的网络时:
solver = caffe.get_solver('solver.prototxt')
solver.solve()
我收到了一个错误:
文件“dice_loss_layer.py”,第42行,正向
ValueError:无法从形状广播输入数组(32,160,128) 成形(32,1,160,128)
实际上骰子损失中的第42行是一条空行,而它上面和下面的行是注释行。如果我用常规softmax图层替换骰子丢失层,则错误消失。但由于骰子在命令行中运行良好,我在丢失层本身找不到任何错误。
我注意到骰子丢失层和softmax层之间的唯一区别是输入到骰子的输出数量是1,而softmax是2.我真的不知道在哪里解决问题。谁能给我一些指示?