在张量流中,我找不到用周期性边界条件进行卷积(tf.nn.conv2d)的直接可能性.
例如.采取张量
[[1,2,3],
[4,5,6],
[7,8,9]]
和任何3×3过滤器.具有周期性边界条件的卷积原则上可以通过周期性填充到5×5来完成
[[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())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。