2016-09-26 6 views
2

Tensorflow API nn.softmaxnn.sparse_softmax_cross_entropy_with_logitstf.nn.rnnなどが与えられているとすれば、サンプルをバッチで行として配置することが慣例であると思われます。Tensorflowの例を行または列として使用しますか?

ニューラルネットワークにおける順方向パスは、tf.matmul(input_batch, W) + bであり、input_batchは、形状が[n_samples, input_size]の行列です。 n_samplesは、APIでしばしばbatch_sizeという名前です。行ベクトルbの追加は、バッチ内のすべてのサンプル(行)にブロードキャストされます。

これは、ニューラルネットワークを扱う際に一般的に採用されている方法ですか?私は、サンプルを列として持ち、フォワードパスのウェイト行列の左乗算を使用する多くのリサーチ記事を読んできました。なぜこの大会は選ばれたのですか?

EDIT

は、この記事では、入力の左側の重み行列、ならびにベクターの連結の乗算を使用するため、サンプルは列でなければならない: http://colah.github.io/posts/2015-08-Understanding-LSTMs/。これは、Tensorflowのドキュメントhttps://www.tensorflow.org/versions/r0.11/tutorials/recurrent/index.htmlで参照されています。


BasicLSTMCellの実装は、ここでソースhttps://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/rnn_cell.pyによると、この記事https://arxiv.org/pdf/1409.2329v5.pdfに基づいています。また、左から乗算が表示されます。


最後に、この記事https://arxiv.org/pdf/1506.00019.pdfでは、アクティベーションも列ベクトルです。

+0

例は通常0次元(バッチ次元)です。なぜなら、このディメンションは通常は存在し、他のディメンションはオプションなので、最初のディメンションにするのが理にかなっていると思います。 –

答えて

0

これは純粋に慣例の問題であり、(ほとんどの)機械学習の研究者と実践者は[n_samples, input_size]の取り決めを採用することに同意したと思います。 1つのインスタンスが、d要素を持つベクトルではなく、一般的な[d1, d2, ..., dm]配列(たとえば、1つのインスタンスが[width, height, 3] RGBイメージである)である場合に、1つの利点が明らかになります。 [n_samples, input_size]慣例では、常にサンプルサイズである最初のインデックスに頼ることができます。

+0

ありがとうございます。しかし、多くのリサーチ記事が別の方法を示しています。しかし、入力が異なる次元を持つことができますが、それはAPIの規約であり、マトリックスの乗算ではなくなりました。 – user1506145

関連する問題