2

我是张量流的新手。我正在尝试在一维卷积层之后添加一个最大池化层:

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

但是我得到了错误,我知道为什么会这样?

4

1 回答 1

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')
于 2018-02-15T20:28:33.640 回答