что такое неинициализированные данные в функции pytorch.empty - PullRequest
0 голосов
/ 02 июля 2018

Я прошел учебник pytorch и наткнулся на функцию pytorch.empty. было упомянуто, что пустое можно использовать для неинициализированных данных . Но когда я напечатал это, я получил значение. в чем разница между этим и pytorch.rand, который также генерирует данные (я знаю, что rand генерирует между 0 и 1). Ниже приведен код, который я пробовал

a = torch.empty(3,4)
print(a)

Выход:

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]])
b = torch.rand(3,4)
print(b)

Выход:

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]])

Вот ссылка на официальную документацию

1 Ответ

0 голосов
/ 02 июля 2018

После вызова 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]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...