鉴于a, b, c, d
4型tf.int
和形状[1]
的张量,什么是获得张量X
这样的最简单的方法:
X
有形状[h, w]
,X
到处都是0
,除了行a < b
和列c < d
之间,它等于1
。您可以使用tf.meshgrid
创建行和列索引的数组。然后在索引数组上应用logical operations以获取应该在哪里的掩码。最后,tf.where
可用于构建请求的张量X
。
例:
import tensorflow as tf
h = 5
w = 6
a = 1
b = 3
c = 2
d = 4
cols, rows = tf.meshgrid(tf.range(w), tf.range(h))
mask_rows = tf.logical_and( tf.less(rows, b), tf.greater_equal(rows, a))
mask_cols = tf.logical_and( tf.less(cols, d), tf.greater_equal(cols, c))
mask = tf.logical_and(mask_rows, mask_cols)
X = tf.where(mask, tf.ones([h,w], tf.float32), tf.zeros([h,w], tf.float32))
验证输出:
sess = tf.Session()
print(sess.run(cols))
print(sess.run(rows))
print(sess.run(X))
cols
的输出:
[[0 1 2 3 4 5]
[0 1 2 3 4 5]
[0 1 2 3 4 5]
[0 1 2 3 4 5]
[0 1 2 3 4 5]]
rows
的输出
[[0 0 0 0 0 0]
[1 1 1 1 1 1]
[2 2 2 2 2 2]
[3 3 3 3 3 3]
[4 4 4 4 4 4]]
X
的输出
[[0. 0. 0. 0. 0. 0.]
[0. 0. 1. 1. 0. 0.]
[0. 0. 1. 1. 0. 0.]
[0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]]