【问题标题】:How to set Stride, Filter size in Tensorflow for 1-D signals?如何在 Tensorflow 中为一维信号设置步幅、滤波器大小?
【发布时间】:2018-05-10 22:32:20
【问题描述】:

我正在尝试在时间加速度计信号上使用 tensorflow 实现 CNN。

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

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

  • 我想应用窗口大小为 10 个样本的 Max-Pooling:

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

但是我在张量的维度上遇到了错误。关于如何为卷积和最大池设置过滤器大小和步幅的任何建议?

【问题讨论】:

    标签: python tensorflow conv-neural-network stride


    【解决方案1】:

    改用tf.layers.max_pooling1d

    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.]]])
    

    【讨论】:

      猜你喜欢
      • 2021-11-05
      • 2018-02-15
      • 2019-01-31
      • 2011-06-02
      • 1970-01-01
      • 2020-12-20
      • 2013-02-02
      • 2018-05-05
      • 2019-05-17
      相关资源
      最近更新 更多