【MXNet】(五):NDArray的内存开销

接上节【MXNet】(一):创建NDArray。

在运算中,有些操作会操作新开内存来存储运算结果。可以使用Python自带的id函数:如果两个实例的ID一致,那么它们所对应的内存地址相同;反之则不同。

比如,

before = id(Y)
Y = Y + X
id(Y) == before

输出,

X + Y会新开内存,然后将Y指向新内存。

如果想将结果存入特定的位置,可以使用索引来进行替换操作。

Z = Y.zeros_like()
before = id(Z)
Z[:] = X + Y
id(Z) == before

输出,

其实上面的操作还是开辟了临时的内存空间的,如果想避免这种临时的内存开销,可以使用下面的方式,

nd.elemwise_add(X, Y, out=Z)
id(Z) == before

输出,

如果操作数在之后不会被复用,可以用下面的方式来减少内存开销,

before = id(X)
X += Y
id(X) == before

输出,

你可能感兴趣的:(深度学习,MXNet)