gpt4 book ai didi

python - 在tensorflow中Conv1d的情况下如何实现平均池化?

转载 作者:太空宇宙 更新时间:2023-11-03 21:33:45 25 4
gpt4 key购买 nike

我想在 conv1d 中实现平均池化。但是tf.nn.avg_pool函数只能在4维张量上实现。那么我应该怎么做才能克服这个问题呢?

def avg_pool(conv_out):
return tf.nn.avg_pool(conv_out,ksize=[1,1,2,1],strides=[1,1,2,1],padding='SAME')

i = tf.constant([1, 0, 2, 3, 0, 1], dtype=tf.float32)

data = tf.reshape(i, [1, int(i.shape[0]), 1], name='data')

kernel = tf.Variable(tf.random_normal([2,1,1]))

conv_out = tf.nn.conv1d(data, kernel, 2, 'VALID')
pool_out = avg_pool(conv_out)

最佳答案

一种选择是向数据添加附加维度,然后将其删除:

def avg_pool(conv_out):
conv_out_2d = conv_out[:, tf.newaxis]
pool_out_2d = tf.nn.avg_pool(conv_out_2d,
ksize=[1, 1, 2, 1],
strides=[1, 1, 2, 1],
padding='SAME')
pool_out = pool_out_2d[:, 0]
return pool_out

另一种可能性是使用通用 tf.nn.pool :

def avg_pool(conv_out):
return tf.nn.pool(conv_out, window_shape=[2], pooling_type='AVG', padding='SAME')

请注意,在这种情况下,我不包括步幅,因为默认值与您在示例中使用的值相匹配,但如果您愿意,您也可以修改它。

关于python - 在tensorflow中Conv1d的情况下如何实现平均池化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53367734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com