tf.transpose是否也会改变内存(如np.ascontiguousarray)?

时间:2018-04-20 20:44:04

标签: python-2.7 numpy tensorflow

如果我使用tf.transpose它是否也改变了内存布局?

在numpy中,它使用函数np.ascontiguousarray

我的意思是,如果我使用cuda,这将非常重要。因为如果内存布局是[N C H W]或[N H W C],它会有所不同。 (N ... Nr个样本,H ...数组高度,W ...数组宽度,C ...数组深度,例如RGB)

如何检查?

1 个答案:

答案 0 :(得分:1)

如果您仔细阅读the documentation,您可以找到答案:

  

Numpy Compatibility

     

numpy transposes是一种节省内存的常量时间操作,因为它们只是通过调整后的步幅返回相同数据的新视图。

     

TensorFlow不支持步幅,因此转置会返回一个新的张量,其中的项目是置换的。

因此tf.transpose返回一个具有所需形状的新张量(因此效率低下),所以是的,它改变了内存布局。

但是,您可以使用tf.reshape来更改张量形状而无需创建新的张量,而不是使用tf.trasnpose