为什么 Pytorch 中未初始化的张量有初始值?

Why unintialized tensor in Pytorch have initial values?

手电筒命令

x = torch.Tensor(4, 3)

应该创建一个未初始化的张量(基于文档)。 但是当我们尝试打印 x 的内容时,那里有值。

>>>from __future__ import print_function 
>>>print(x)


 0.0000e+00 -8.5899e+09  6.1021e-38
 8.5920e+09  1.7470e-21  4.5806e-41
 0.0000e+00  0.0000e+00  0.0000e+00
 0.0000e+00  0.0000e+00  0.0000e+00
[torch.FloatTensor of size 4x3]

那么这里的uninitialized是什么意思呢?

意思是PyTorch只是在内存中为张量保留了一定的区域,并没有改变它的内容。

这部分内存之前被其他东西占用(另一个张量或完全不同的东西,如浏览器、代码编辑器......如果你使用 CPU 内存)。出于性能原因,之后不会清除其中的值。

内容(以前可能完全不同)只是解释为张量的值。

写入零或其他一些初始化需要计算能力,因此只保留内存中的区域要快得多。

但是这些值也是完全不受控制的,值可以增长到很高,所以在很多情况下你可能会做额外的初始化。