在PyTorch中,有了y = x + y,为什么还需要y += x,有什么好处呢?
在今天之前,我以为"y += x"相比于"y = x + y"的好处仅仅是写的更加紧凑,直到我看到《动手学习深度学习》后,才发现,原来还有节省内存的作用。
我们用一个例子来理解一下:
PyTorch中有一个函数id(),可以展现出内存中引用对象的确切地址。
我们先用下面的程序看一下"y = x + y"的运行前后,y所指向的内存位置变化:
打印的结果为:
可以看到执行"y = x + y"的前后,y所指向的内存位置是不一样的。
这是因为,先计算x + y,并将结果存储到了一个新的内存地址中,然后,让y指向这个新的内存地址。
接着,我们执行"y += x":
打印的结果为:
可以看到执行"y = x + y"的前后,y所指向的内存位置是一样的。
Reference:
1.《动手学习深度学习》