pytorch.empty函数中未初始化的数据是什么

InA*_*ash 5 python memory-management multidimensional-array pytorch tensor

我正在阅读pytorch教程,并遇到了pytorch.empty功能。提到空可以用于未初始化的数据。但是,当我打印它时,我得到了价值。这和pytorch.rand生成数据之间有什么区别(我知道rand生成0和1之间的值)。下面是我尝试的代码

a = torch.empty(3,4)
print(a)
Run Code Online (Sandbox Code Playgroud)

输出:

tensor([[ 8.4135e-38,  0.0000e+00,  6.2579e-41,  5.4592e-39],
        [-5.6345e-08,  2.5353e+30,  5.0447e-44,  1.7020e-41],
        [ 1.4000e-38,  5.7697e-05,  2.5353e+30,  2.1580e-43]])
Run Code Online (Sandbox Code Playgroud)
b = torch.rand(3,4)
print(b)
Run Code Online (Sandbox Code Playgroud)

输出:

tensor([[ 0.1514,  0.8406,  0.2708,  0.3422],
        [ 0.7196,  0.6120,  0.4476,  0.6705],
        [ 0.6989,  0.2086,  0.5100,  0.8285]])
Run Code Online (Sandbox Code Playgroud)

这是官方文档的链接

kma*_*o23 7

一旦调用torch.empty(),就会根据张量的大小(形状)分配一个内存块。对于未初始化的数据,这意味着torch.empty()将仅按原样返回存储块中的值。这些值可以是默认值,也可以是由于某些其他操作而存储在那些内存块中的值,这些操作之前使用过该内存块的那一部分。


这是一个简单的例子:

# a block of memory with the values in it
In [74]: torch.empty(2, 3)
Out[74]: 
tensor([[-1.0049e+08,  4.5688e-41, -9.1450e-38],
        [ 3.0638e-41,  4.4842e-44,  0.0000e+00]])

# same run; but note the change in values.
# i.e. different memory addresses than on the previous run were used.
In [75]: torch.empty(2, 3)
Out[75]: 
tensor([[-1.0049e+08,  4.5688e-41, -7.9421e-38],
        [ 3.0638e-41,  4.4842e-44,  0.0000e+00]])
Run Code Online (Sandbox Code Playgroud)