微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – tensorflow周期性填充

在张量流中,我找不到用周期性边界条件进行卷积(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] 举报,一经查实,本站将立刻删除。

相关推荐