如何在 Tensorflow 中为一维信号设置步幅、滤波器大小?
How to set Stride, Filter size in Tensorflow for 1-D signals?
我正在尝试在时间加速度计信号上使用张量流来实现 CNN。
- 我每 10 毫秒对信号值进行分段(200 个样本)
我要进行一维卷积:
tf.nn.conv1d(x, W, stride=1, padding='VALID')
卷积 window 大小为 20 个样本,步幅为 1,具有 32 个特征和有效填充
我想应用 window 大小为 10 个样本的最大池化:
tf.nn.max_pool(x, ksize=[1, 1, 10, 1], strides= [1, 1, 2, 1], padding='VALID')
但是我收到有关张量维度的错误。关于如何为卷积和最大池化设置滤波器大小和步幅有什么建议吗?
改用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.]]])
我正在尝试在时间加速度计信号上使用张量流来实现 CNN。
- 我每 10 毫秒对信号值进行分段(200 个样本)
我要进行一维卷积:
tf.nn.conv1d(x, W, stride=1, padding='VALID')
卷积 window 大小为 20 个样本,步幅为 1,具有 32 个特征和有效填充
我想应用 window 大小为 10 个样本的最大池化:
tf.nn.max_pool(x, ksize=[1, 1, 10, 1], strides= [1, 1, 2, 1], padding='VALID')
但是我收到有关张量维度的错误。关于如何为卷积和最大池化设置滤波器大小和步幅有什么建议吗?
改用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.]]])