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