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

时间:2018-02-19 16:01:46

标签: constructor initialization pytorch tensor

火炬命令

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]

那么未初始化的含义是什么?

1 个答案:

答案 0 :(得分:1)

这意味着PyTorch只是在张量的内存中保留了一定的区域,而没有更改其内容。

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

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

写入零或进行其他一些初始化需要计算能力,因此仅将区域保留在内存中会更快。

但是这些值也完全不受控制,值可能会变得很高,因此在许多情况下,您可能需要进行其他初始化。