【问题标题】:Best way to flatten a 2D tensor containing a vector in TensorFlow?在TensorFlow中展平包含向量的2D张量的最佳方法?
【发布时间】:2016-03-15 15:09:38
【问题描述】:

将实际上是水平或垂直向量的二维张量展平为一维张量的最有效方法是什么?

在性能方面是否存在差异:

tf.reshape(w, [-1])

tf.squeeze(w)

?

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    tf.reshape(w, [-1])tf.squeeze(w) 都是“便宜的”,因为它们只对给定张量的元数据(即形状)进行操作,并且不修改数据本身。两者中tf.reshape() 略有simpler logic internally,但两者的表现应该没有区别。

    【讨论】:

    • 请参阅this post,了解在保持批次尺寸的同时进行展平。
    【解决方案2】:

    对于一个简单的 2D 张量,两者的功能应该相同,正如 @sv_jan5 所提到的。但是,请注意tf.squeeze(w) 仅在多层张量的情况下挤压第一层,而tf.reshape(w,[-1]) 将压平整个张量,无论深度如何。

    例如,我们看看

    w = [[1,2,],[3,4]]    
    

    现在这两个函数的输出将不再相同。 tf.squeeze(w)将输出

    <tf.Tensor: shape=(2, 2), dtype=int32, numpy=
    array([[1, 2],
           [3, 4]], dtype=int32)>
    

    tf.reshape(w,[-1]) 将输出

    <tf.Tensor: shape=(4,), dtype=int32, numpy=array([1, 2, 3, 4], dtype=int32)>
    

    【讨论】:

      猜你喜欢
      • 2018-09-08
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 2019-08-20
      • 2013-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多