【问题标题】:Does tf.transpose also change the memory (like np.ascontiguousarray)?tf.transpose 是否也会改变内存(如 np.ascontiguousarray)?
【发布时间】:2018-10-01 15:11:09
【问题描述】:

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

在 numpy 中使用函数np.ascontiguousarray

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

如何检查?

【问题讨论】:

    标签: python-2.7 numpy tensorflow


    【解决方案1】:

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

    Numpy 兼容性

    在 numpy 中,转置是节省内存的常数时间操作,因为它们只是返回具有调整步幅的相同数据的新视图。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-04
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 2012-08-05
      相关资源
      最近更新 更多