Tensorflow中的4d张量是什么意思?

时间:2016-09-26 15:02:20

标签: machine-learning tensorflow convolution

我需要沿固定大小的文本行执行卷积。基本上,训练示例的形式为:1*N_FEATURES其中N_FEATURES等于3640(140个字符编码为一热,因此40 * 26 = 3640)。我试图理解示例here,正是:

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') 

我们有:[WINDOW_SIZE, 1]而非[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'”?

1 个答案:

答案 0 :(得分:2)

4-D张量正是它所表示的:具有四个维度的张量(下标,特征......)。

一维中滑动窗口的表示法是一种符号约定。为方便起见,我们将重要维度放在第一位,并保留 1 大小。因此,3宽切片(1-D窗口)作为3x1窗口给出。