除了在动态矩形中,Tensor等于零

问题描述 投票:0回答:1

鉴于a, b, c, d 4型tf.int和形状[1]的张量,什么是获得张量X这样的最简单的方法:

  • X有形状[h, w]
  • X到处都是0,除了行a < b和列c < d之间,它等于1
python tensorflow
1个回答
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.]]
© www.soinside.com 2019 - 2024. All rights reserved.