【发布时间】:2016-03-15 15:09:38
【问题描述】:
将实际上是水平或垂直向量的二维张量展平为一维张量的最有效方法是什么?
在性能方面是否存在差异:
tf.reshape(w, [-1])
和
tf.squeeze(w)
?
【问题讨论】:
标签: python tensorflow
将实际上是水平或垂直向量的二维张量展平为一维张量的最有效方法是什么?
在性能方面是否存在差异:
tf.reshape(w, [-1])
和
tf.squeeze(w)
?
【问题讨论】:
标签: python tensorflow
tf.reshape(w, [-1]) 和 tf.squeeze(w) 都是“便宜的”,因为它们只对给定张量的元数据(即形状)进行操作,并且不修改数据本身。两者中tf.reshape() 略有simpler logic internally,但两者的表现应该没有区别。
【讨论】:
对于一个简单的 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)>
【讨论】: