gpt4 book ai didi

python - tensorflow 周期性填充

转载 作者:太空狗 更新时间:2023-10-30 02:41:37 25 4
gpt4 key购买 nike

在 tensorflow 中,我找不到一种直接的可能性来使用周期性边界条件进行卷积 ( tf.nn.conv2d)。

例如取张量

[[1,2,3],
[4,5,6],
[7,8,9]]

和任何 3x3 过滤器。原则上可以通过对 5x5 进行周期性填充来完成具有周期性边界条件的卷积

[[9,7,8,9,7],
[3,1,2,3,1],
[6,4,5,6,4],
[9,7,8,9,7],
[3,1,2,3,1]]

然后在“有效”模式下与过滤器进行卷积。但是,函数 tf.pad不幸的是不支持定期填充。

有没有简单的解决方法?

最佳答案

以下应该适用于您的情况:

import tensorflow as tf
a = tf.constant([[1,2,3],[4,5,6],[7,8,9]])
b = tf.tile(a, [3, 3])
result = b[2:7, 2:7]
sess = tf.InteractiveSession()
print(result.eval())

# prints the following
array([[9, 7, 8, 9, 7],
[3, 1, 2, 3, 1],
[6, 4, 5, 6, 4],
[9, 7, 8, 9, 7],
[3, 1, 2, 3, 1]], dtype=int32)

如评论中所述,这在内存方面有点低效。如果内存对您来说是个问题,但又愿意花费一些计算,那么以下方法也行得通:

pre = tf.constant([[0, 0, 1], [1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 0, 0]])
post = tf.transpose(pre)
result = tf.matmul(tf.matmul(pre, a), post)
print(result.eval())

关于python - tensorflow 周期性填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39088489/

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