alexgkendall / caffe-segnet

Implementation of SegNet: A Deep Convolutional Encoder-Decoder Architecture for Semantic Pixel-Wise Labelling
http://mi.eng.cam.ac.uk/projects/segnet/
Other
1.08k stars 452 forks source link

contrastive_loss_layer.cpp has a very little bug (I think) #128

Open SuaiChen opened 6 years ago

SuaiChen commented 6 years ago

I met an error just like below:

src/caffe/layers/contrastive_loss_layer.cpp:56:22: error: no matching function for call to 'max'
        Dtype dist = std::max(margin - sqrt(dist_sq_.cpu_data()[i]), 0.0);
                     ^~~~~~~~
src/caffe/layers/contrastive_loss_layer.cpp:118:19: note: in instantiation of member function 'caffe::ContrastiveLossLayer<float>::Forward_cpu' requested here
INSTANTIATE_CLASS(ContrastiveLossLayer);
                  ^
/Library/Developer/CommandLineTools/usr/include/c++/v1/algorithm:2611:1: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('float' vs. 'double')
max(const _Tp& __a, const _Tp& __b)
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/algorithm:2603:1: note: candidate function template not viable: requires 3 arguments, but 2 were provided
max(const _Tp& __a, const _Tp& __b, _Compare __comp)

I revised the 56th row.

Dtype dist = std::max(margin - sqrt(dist_sq_.cpu_data()[i]), Dtype(0.0));

And it can work. My computer is Macpro and my system version is 10.13.1.

qxandy commented 6 years ago

Met the same problem. Just followed your solution. Maybe the Dtype() is forgotten, as is shown in line 54 in the same file.

qu1j0t3 commented 6 years ago

Yes, previously referenced here: https://github.com/alexgkendall/caffe-segnet/issues/124#issuecomment-340714512