我需要沿固定大小的文本行执行卷积。基本上,训练示例的形式为: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'
”?
答案 0 :(得分:2)
4-D张量正是它所表示的:具有四个维度的张量(下标,特征......)。
一维中滑动窗口的表示法是一种符号约定。为方便起见,我们将重要维度放在第一位,并保留 1 大小。因此,3宽切片(1-D窗口)作为3x1窗口给出。