我正在尝试对3D张量执行特定操作。我将在下面使用3D numpy数组显示它。基本上,我希望执行与以下相同的操作,但要使用等效的张量。
a3 = np.array([[[1,0,0],[1,0,0],[1,0,0],[1,0,0],[0,1,0],[0,1,0],[0,0,1],[0,0,1]], [[1,0,0],[1,0,0],[1,0,0],[1,0,0],[0,0,1],[0,0,1],[0,0,1],[0,0,1]], [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]]])
expression = (a3.sum(axis=(1,2)) >= 1)
a3[expression, :, 1].flatten()
它应该返回一个与初始3D张量的第一维长度相同的列表。
我试图基于tf.constant编写一些代码,但到目前为止还没有奏效。这是我的尝试:
a3 = tf.convert_to_tensor(a3)
one = tf.constant(1, dtype=tf.int32)
mask = tf.keras.backend.greater_equal(tf.keras.backend.sum(a3,axis=(1,2)),one)
tf.boolean_mask(a3,mask,axis=0)
sess = tf.compat.v1.Session()
with sess.as_default():
assert tf.compat.v1.get_default_session() is sess
print(a3.eval())
答案 0 :(得分:0)
确定了:
a3 = tf.convert_to_tensor(a3)
one = tf.constant(1, dtype=tf.int32)
mask = tf.keras.backend.greater_equal(tf.keras.backend.sum(a3,axis=(1,2)),one)
a4masked = tf.boolean_mask(a3,mask,axis=0)
a4flat = tf.reshape(a4masked, [tf.size(a4masked)])
sess = tf.compat.v1.Session()
with sess.as_default():
assert tf.compat.v1.get_default_session() is sess
print(a4flat.eval())