1

チュートリアルで説明されているように、 http: //deeplearning.net/tutorial/DBN.html#dbn から Contrastive Divergence を使用したディープ ラーニングのコードを採用して、バイナリではなく実数値の入力データを処理しようとしています。これを行う方法は、シグモイド活性化関数から Rectified Linear Unit (ReLU) に切り替えることだと理解していますが、実際的な観点からこれを行うことについていくつか質問があります...

  1. max(0,x) として定義された ReLU を単純に使用できますか、それとも N がガウス ノイズである max(0,x+N) として定義された NReLU が必要ですか? NReLU が推奨される場合、サンプルの N を計算する適切な方法は何ですか?
  2. ReLU(またはNReLU)を使用する場合、自由エネルギー関数を変更する必要がありますか?これは、シグモイドユニットのPythonコードです...

    def free_energy(self, v_sample):
        wx_b = T.dot(v_sample, self.W) + self.hbias
        vbias_term = T.dot(v_sample, self.vbias)
        hidden_term = T.sum(T.log(1 + T.exp(wx_b)), axis=1)
        return -hidden_term - vbias_term
    

私が論文で見たものから、上記はシグモイドと ReLU の両方で実際に機能するように見えます。これが正しくない場合は、ReLU で動作するように変更されたコードを投稿していただければ幸いです。

4

0 に答える 0