在TensorFlow中展平包含矢量的2D张量的最佳方法是什么?

时间:2015-12-10 05:12:12

标签: python tensorflow

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

性能方面是否存在差异:

tf.reshape(w, [-1])

tf.squeeze(w)

2 个答案:

答案 0 :(得分:43)

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

答案 1 :(得分:1)

对于一个简单的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)>