如果我使用tf.transpose
它也会改变内存布局吗?
在 numpy 中,它使用函数np.ascontiguousarray
.
我的意思是,如果我使用 cuda,这将很重要。因为内存布局是 [N C H W] 或 [N H W C] 会有所不同。 (N ... Nr 样本,H ... 数组高度,W ... 数组宽度,C ... 数组深度,例如 RGB)
如何检查这个?
如果你仔细阅读文档 https://www.tensorflow.org/api_docs/python/tf/transpose你可以找到答案:
Numpy 兼容性
在 numpy 中,转置是内存高效的恒定时间操作,因为它们只是返回具有调整步幅的相同数据的新视图。
TensorFlow 不支持步幅,因此转置会返回一个新的张量,其中的项已排列。
Hence tf.transpose
返回具有所需形状的新张量(因此效率低下),所以是的,它改变了内存布局。
但是,不要使用tf.trasnpose
你可以用tf.reshape https://www.tensorflow.org/api_docs/python/tf/reshape用于更改张量形状而不创建新的张量形状
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)