2017-01-13 5 views
1

私は、畳み込み層した後、紙hereTensorflowランク3テンソルの寸法を小さく

に研究されているCLDNNを構築しようとしています、機能が薄暗い低減層を通過します。フィーチャがコンバートレイヤを離れる時点で、サイズは[?, N, M]です。 Nは窓の数を表し、ネットワークは次元Mの縮小を必要とすると考えているので、薄暗い層の後のフィーチャの寸法は[?,N,Q]であり、Q < Mである。

私には2つの質問があります。

  1. TensorFlowではどうすればよいですか?私はtf.matmul(x,W)の乗算が[?, N, Q]が、[?, N, M][M, Q]が乗算に対して有効な寸法ではありませんもたらすだろうと思った

    W = tf.Variable(tf.truncated_normal([M,Q],stddev=0.1)) 
    

    と重みを使用してみました。私はNを一定に保ち、Mの次元を小さくしたいと思っています。tf.matmul(x,W)の結果にどのような非線形性を適用すればよいですか?私はReLUを使うことを考えていましたが、#1もできませんでした。

答えて

0

リンク紙(らTN Sainath 。: "たたみ込み、長期短期記憶、完全に接続されたディープニューラルネットワーク")によると、

[...]削減線形層からの256個の出力を有するような次元性が適切であった。入力サイズは、すなわち[?, N, M]または(常に最初の寸法が?で示されるミニバッチ内のサンプルの数であると仮定して)他の任意の次元数であり、出力は[?, Q]あろうどんな意味

、典型的にはQ=256である。

入力にウェイト行列を掛けて次元削減を行っているので、空間情報は保持されません。つまり、各入力が行列かベクトルかどうかは関係ありません。したがって、直線層への入力の形状を[?, N*M]に変更することができます。xその後、我々は質問2については、W[N*M, Q].

W = tf.Variable(tf.truncated_normal([N*M, Q], stddev=0.1)) 
x_vec = tf.reshape(x, shape=(-1, N*M)) 
y = tf.matmul(x_vec, W) 

最後の次元の行列があり、単純な行列の乗算tf.matmul(x, W)を作成することができます:紙で、次元削減層は、線形層である、あなたは適用されません。すなわち出力に対する非線形性。

関連する問題