1
我從 Caffe開始並且運行良好。

我需要在inner product layer中加權平方。 Forward_cpu函數表示weight,但我不知道如何對其進行平方。 forward_cpu函數定義如下:如何在caffe的內層產品中加權?

template <typename Dtype> 
void InnerProductLayer<Dtype>::Forward_cpu(const vector<Blob<Dtype>*>& bottom, 
    const vector<Blob<Dtype>*>& top) { 
    const Dtype* bottom_data = bottom[0]->cpu_data(); 
    Dtype* top_data = top[0]->mutable_cpu_data(); 
    const Dtype* weight = this->blobs_[0]->cpu_data(); 
    Dtype* sqr_weight; 
    caffe_sqr<Dtype>(this->blobs_[0]->count(), weight, sqr_weight); 
    caffe_cpu_gemm<Dtype>(CblasNoTrans, transpose_ ? CblasNoTrans : CblasTrans, 
     M_, N_, K_, (Dtype)1., 
     bottom_data, weight, (Dtype)0., top_data); 
    if (bias_term_) { 
    caffe_cpu_gemm<Dtype>(CblasNoTrans, CblasNoTrans, M_, N_, 1, (Dtype)1., 
     bias_multiplier_.cpu_data(), 
     this->blobs_[1]->cpu_data(), (Dtype)1., top_data); 
    } 
} 

請注意,我用的caffe_sqr,但caffe_sqr<Dtype>(weight.count(), weights, new_weights);返回一個錯誤。當我做我的新層,該警告是:

warning: ‘sqr_weight’ is used uninitialized in this function [-Wuninitialized] 
caffe_sqr<Dtype>(this->blobs_[0]->count(), weight, sqr_weight); 

和訓練我的模型後,錯誤是:

F1229 20:00:38.622575 5272 mkl_alternate.hpp:34] Check failed: y 
Check failure stack trace: 
@  0x7f4f97e675cd google::LogMessage::Fail() 
@  0x7f4f97e69433 google::LogMessage::SendToLog() 
@  0x7f4f97e6715b google::LogMessage::Flush() 
@  0x7f4f97e69e1e google::LogMessageFatal::~LogMessageFatal() 
@  0x7f4f98338760 vSqr<>() 
@  0x7f4f982eb45a caffe::PositiveInnerProductLayer<>::Forward_cpu() 
@  0x7f4f9830b0d3 caffe::Net<>::ForwardFromTo() 
@  0x7f4f9830b347 caffe::Net<>::ForwardPrefilled() 
@  0x7f4f981e075f caffe::Solver<>::Test() 
@  0x7f4f981e119e caffe::Solver<>::TestAll() 
@  0x7f4f981e12eb caffe::Solver<>::Step() 
@  0x7f4f981e1f85 caffe::Solver<>::Solve() 
@   0x40aafb train() 
@   0x406f48 main 
@  0x7f4f970f6830 __libc_start_main 
@   0x407609 _start 
@    (nil) (unknown) 
非常感謝!!!!任何意見,將不勝感激!

回答

1

請注意,weight定義爲指向Dtype的指針,指針沒有count()方法。

您需要的重量Blob的count()

this->blobs_[0]->count() 
+0

親愛@shai,非常感謝您的時間,但如何方的權重? –

+0

@ahmadnavidghanizadeh'caffe_sqr'有什麼問題? – Shai

+0

我編輯問題。感謝您的關注。 –

相關問題