1D卷积层后的最大池化层

时间:2018-02-15 20:08:27

标签: python tensorflow machine-learning conv-neural-network max-pooling

我是Tensorflow的新手。我正在尝试在1D卷积层之后添加最大池池:

import tensorflow as tf
import math
sess = tf.InteractiveSession()

length=458
# These will be inputs
## Input pixels, image with one channel (gray)
x = tf.placeholder("float", [None, length])
# Note that -1 is for reshaping
x_im = tf.reshape(x, [-1,length,1])
## Known labels
# None works during variable creation to be
# unspecified size
y_ = tf.placeholder("float", [None,2])

# Conv layer 1
num_filters1 = 2
winx1 = 3
W1 = tf.Variable(tf.truncated_normal(
    [winx1, 1 , num_filters1],
    stddev=1./math.sqrt(winx1)))
b1 = tf.Variable(tf.constant(0.1,
                shape=[num_filters1]))
#  convolution, pad with zeros on edges
xw = tf.nn.conv1d(x_im, W1,
                  stride=5,
                  padding='SAME')
h1 = tf.nn.relu(xw + b1)
#  Max pooling, no padding on edges
p1 = tf.nn.max_pool(h1, ksize=[1, 1, 2, 1],
        strides=[1, 1, 1, 1], padding='VALID')

但我得到错误,我弄清楚为什么会这样?

1 个答案:

答案 0 :(得分:6)

tf.nn.max_pool用于2D池,即,它期望秩 4 的输入张量(您的等级 3 )。您应该扩展输入的维度,或者只使用tf.layers.max_pooling1d

p1 = tf.layers.max_pooling1d(h1, pool_size=2, strides=1, padding='VALID')