将2D张量实际上是水平或垂直向量展平为1D张量的最有效方法是什么?
性能方面是否存在差异:
tf.reshape(w, [-1])
和
tf.squeeze(w)
答案 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)>