Skip to main content
 首页 » 编程设计

python之一维卷积层之后的最大池化层

2025年05月04日15jirigala

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

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

但我收到错误,我弄清楚这是为什么?

请您参考如下方法:

tf.nn.max_pool用于二维池化,即它期望输入张量为 4(你的是 3)。您应该扩展输入的维度或简单地使用 tf.layers.max_pooling1d :

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