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

And*_*bis 31 python tensorflow

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

在以下方面的表现是否有所不同:

tf.reshape(w, [-1])
Run Code Online (Sandbox Code Playgroud)

tf.squeeze(w)
Run Code Online (Sandbox Code Playgroud)

mrr*_*rry 47

这两个tf.reshape(w, [-1])tf.squeeze(w)是"便宜",因为它们在给定的张量的元数据(即形状)只经营,并且不修改数据本身.其中两个内部逻辑tf.reshape()稍微简单,但两者的性能应该难以区分.


小智 9

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

例如,让我们看看

w = [[1,2,],[3,4]]    
Run Code Online (Sandbox Code Playgroud)

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

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

同时tf.reshape(w,[-1])会输出

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