Python 如何在Tensorflow中设置一维信号的步幅、滤波器大小?

Python 如何在Tensorflow中设置一维信号的步幅、滤波器大小?,python,tensorflow,conv-neural-network,stride,Python,Tensorflow,Conv Neural Network,Stride,我正试图利用时态加速度计信号上的tensorflow实现CNN 我每10毫秒对信号值进行分段(200个样本) 我想执行一维卷积: tf.nn.conv1d(x, W, stride=1, padding='VALID') 卷积窗口大小为20个样本,步长为1,包含32个特征和有效填充 我想应用最大池,窗口大小为10个示例: tf.nn.max_pool(x, ksize=[1, 1, 10, 1], strides= [1, 1, 2, 1], padding='VALID') 但是关

我正试图利用时态加速度计信号上的tensorflow实现CNN

  • 我每10毫秒对信号值进行分段(200个样本)
  • 我想执行一维卷积:

    tf.nn.conv1d(x, W, stride=1, padding='VALID')
    
  • 卷积窗口大小为20个样本,步长为1,包含32个特征和有效填充

  • 我想应用最大池,窗口大小为10个示例:

    tf.nn.max_pool(x, ksize=[1, 1, 10, 1], strides= [1, 1, 2, 1], padding='VALID')
    

但是关于张量的维数,我得到了一些错误。关于如何设置卷积和最大池的过滤器大小和步长,有什么建议吗?

使用
tf.layers.max\u poolg1d

tf.layers.max_pooling1d(x, pool_size=10, strides=2, padding='valid')

例如:

>>> x = np.reshape(np.arange(20),(1,20,1))
>>> w = np.reshape(np.array([1.,2.,3.]), (3,1,1))
>>> X = tf.placeholder(tf.float64, [1,20,1])
>>> W = tf.constant(w)
>>> h = tf.nn.conv1d(X, W, stride=1, padding='VALID')
>>> p = tf.layers.max_pooling1d(h, pool_size=10, strides=2, padding='valid')
>>> sess.run(h, feed_dict={X:x})
array([[[  8.],
        [ 14.],
        [ 20.],
        [ 26.],
        [ 32.],
        [ 38.],
        [ 44.],
        [ 50.],
        [ 56.],
        [ 62.],
        [ 68.],
        [ 74.],
        [ 80.],
        [ 86.],
        [ 92.],
        [ 98.],
        [104.],
        [110.]]])
>>> sess.run(p, feed_dict={X:x})
array([[[ 62.],
        [ 74.],
        [ 86.],
        [ 98.],
        [110.]]])