3D张量子集运算

时间:2019-09-13 00:28:30

标签: python tensorflow keras tensor

我正在尝试对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())

1 个答案:

答案 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())