1

私はdeconvolutionプロセスを実現するためにpycaffeのbackward関数を使用しています。私はまずフォワード・プロセスを実行し、ネットの出力データ・ブロブを取得し、次にデータ・ブロブをトップ・レイヤの差分ブロブに割り当てて、バックワード・プロセスを実行します。ただし、下位層の差分は、逆方向処理によって変更されず、すべてゼロになります。 diffがなぜ後方に転送されないのか分かりません。 name_list_上記のコードでpycaffeはdiffを上から下に転送できません

def backward(fcn_net, im, name_list_, target_blob): 
    start=name_list_[len(name_list_)-1]; end=name_list_[0] 
    print(start, end) 
    fcn_net.blobs[start].diff[...]=im[...] 
    fcn_net.backward(start=start, end=end) 
    return fcn_net.blobs[target_blob].diff 

全てCONV層とプーリング層秩序、および最後CONV層から後方開始を含んでいます。ありがとう!

答えて

0

ネットがデフォルトでグラデーションを通過しない場合があります。
ネットプロトタイプにforce_backwardを設定することを検討してください。
たとえばthis answerを参照してください。

関連する問題