2016-09-26 140 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

四維張量正是它所表示的:一個四維張量(下標,特徵,...)。

在一個維度上滑動窗口的符號是符號約定。爲了方便起見,我們首先放置重要尺寸,並保持尺寸不變。因此,一個3寬的切片(一維窗口)作爲一個3x1窗口給出。

+0

我是否明白'擴大'形式中的3寬1高的形狀會是[1,1,3,1]?另外,你如何確定什麼維度是重要的? – Oleksandra

+0

是的,[1,1,3,1]是我閱讀API的方式。 「重要」並不是一個真正的技術術語:無論是掌握我們感興趣的信息。限制爲1的任何維度僅僅是一個地方擁有者。同樣,一個彩色圖像在某個地方有一個「無關緊要」的尺寸,即RGB分量。 – Prune