如果我使用tf.transpose
它是否也改变了内存布局?
在numpy中,它使用函数np.ascontiguousarray
。
我的意思是,如果我使用cuda,这将非常重要。因为如果内存布局是[N C H W]或[N H W C],它会有所不同。 (N ... Nr个样本,H ...数组高度,W ...数组宽度,C ...数组深度,例如RGB)
如何检查?
答案 0 :(得分:1)
如果您仔细阅读the documentation,您可以找到答案:
Numpy Compatibility
numpy transposes是一种节省内存的常量时间操作,因为它们只是通过调整后的步幅返回相同数据的新视图。
TensorFlow不支持步幅,因此转置会返回一个新的张量,其中的项目是置换的。
因此tf.transpose
返回一个具有所需形状的新张量(因此效率低下),所以是的,它改变了内存布局。
但是,您可以使用tf.reshape
来更改张量形状而无需创建新的张量,而不是使用tf.trasnpose