我正试着在3D张量上执行特定的操作。我将在下面使用3Dnumpy数组来显示它。基本上,我想做与下面相同的操作,但是是在一个等价的张量上。
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())发布于 2019-09-13 08:56:35
好的,想明白了:
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())https://stackoverflow.com/questions/57915955
复制相似问题