【问题标题】:TensorFlow - 3D tensor that gathers every Nth tensor from 2D tensor and strides 1TensorFlow - 3D 张量,从 2D 张量中收集每个第 N 个张量,步幅为 1
【发布时间】:2018-05-15 22:00:59
【问题描述】:

假设我在[M, 1] 中有一个2D-Tensor T,例如

T = tf.expand_dims([A1,
     B1,
     C1,
     A2,
     B2,
     C2], 1)

我想像这样重塑它:

T_reshp = [[[A1], [A2]]
           [[B1], [B2]]
           [[C1], [C2]]]

我提前知道MN(每组张量的个数)。此外,让t_reshp.shape[0] = M/N = P 在我尝试过使用tf.reshape

T_reshp = tf.reshape(T, [P, N, 1])

但是,我最终得到:

T_reshp = [[[A1], [B1]]
           [[C1], [A2]]
           [[B2], [C2]]]

我可以使用切片或重塑操作来做到这一点吗?

【问题讨论】:

    标签: python tensorflow slice reshape


    【解决方案1】:

    您可以先将其重塑为尺寸[N,P,1],然后再将transpose 调整为第一和第二轴:

    tf.transpose(tf.reshape(T, [N, P, 1]), [1,0,2])
    #                           ^^^^ switch the two dimensions here and then transpose
    

    示例

    T = tf.expand_dims([1,2,3,4,5,6], 1)
    sess = tf.Session()
    T1 = tf.transpose(tf.reshape(T, [2,3,1]), [1,0,2])
    
    sess.run(T1)
    #array([[[1],
    #        [4]],
    
    #       [[2],
    #        [5]],
    
    #       [[3],
    #        [6]]], dtype=int32)
    

    【讨论】:

    • 优雅的解决方案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2020-12-04
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多