2016-09-26 11 views
0

固定サイズのテキスト行に沿って畳み込みを実行する必要があります。したがって、本質的には、トレーニングの例は1*N_FEATURESの形式です。ここで、N_FEATURESは3640です(140文字はワンホットとしてエンコードされているため、40 * 26 = 3640)。私は正確には、例hereの意味を理解しようとしています:Tensorflowでは4dテンソルの意味は何ですか?

def my_conv_model(X, y): 
    X = tf.reshape(X, [-1, N_FEATURES, 1, 1]) # to form a 4d tensor of shape batch_size x n_features x 1 x 1 
    features = skflow.ops.conv2d(X, N_FILTERS, [WINDOW_SIZE, 1], padding='VALID') # this will give you sliding window of WINDOW_SIZE x 1 convolution. 
    pool = tf.squeeze(tf.reduce_max(features, 1), squeeze_dims=[1]) 
    return return skflow.models.logistic_regression(pool, y) 

このラインでは、なぜ私は理解していない:

features = skflow.ops.conv2d(X, N_FILTERS, [WINDOW_SIZE, 1], padding='VALID') 

我々が持っている:​​なく[1, WINDOW_SIZE]を?私の知る限り理解して以来 、コンボリューションは以下のように実行する必要があります。

training example: '001010101000100101' 
sliding window: |---| 
        |---| 
        |---| 

というように、サイズ[1、WINDOW_SIZE]の各ウィンドウは、その高さが1であることから、幅が3である。しかしなぜ例は "features = skflow.ops.conv2d(X, N_FILTERS, [WINDOW_SIZE, 1], padding='VALID'"と書かれています)?

答えて

2

4次元テンソルは、4次元のテンソル(添え字、フィーチャーなど)とまったく同じです。

1次元のスライディングウィンドウの表記法は表記法です。便宜上、まず重要なディメンションを入れ、最後にのサイズを維持します。したがって、3幅のスライス(1-Dウィンドウ)が3×1ウィンドウとして与えられる。

+0

「拡張された」フォームの3ワイドの1ハイが形状[1,1,3,1]になることは間違いありませんか?また、どのような次元が重要であるかをどのように判断しますか? – Oleksandra

+0

はい、[1、1、3、1]は私がAPIを読んでいる方法です。 「有意義」とは、実際には専門用語ではありません。制限が1のディメンションは単にプレースホルダです。同様に、カラー画像は、RGB成分のどこかに「重要でない」次元3を有する。 – Prune

関連する問題