*My post explains empty() and empty_like().
empty_strided() can create the 0D or more D strided tensor with the zero or more floating-point numbers(Default), integers, complex numbers or boolean values from uninitialized memory which are called uninitialized data as shown below:
*Memos:
-
empty_strided()
can be used with torch but not with a tensor. - The 1st argument with
torch
issize
(Required-Type:tuple
ofint
,list
ofint
, or size()). - The 2nd argument with
torch
isstride
(Required-Type:tuple
ofint
orlist
ofint
). - There is
dtype
argument withtorch
(Optional-Default:None
-Type:dtype): *Memos:- If it's
None
, get_default_dtype() is used. *My post explainsget_default_dtype()
and set_default_dtype(). -
dtype=
must be used. - My post explains
dtype
argument.
- If it's
- There is
device
argument withtorch
(Optional-Defalut:None
-Type:str
,int
or device()): *Memos:- If it's
None
, get_default_device() is used. *My post explainsget_default_device()
and set_default_device(). -
device=
must be used. - My post explains
device
argument.
- If it's
- There is
requires_grad
argument withtorch
(Optional-Default:False
-Type:bool
): *Memos:-
requires_grad=
must be used. - My post explains
requires_grad
argument.
-
- The number of
size
andstride
must be the same. - Uninitialized memory has data but the data is unknown.
import torch torch.empty_strided(size=(), stride=()) torch.empty_strided(size=torch.tensor(8).size(), stride=()) # tensor(1.2770e+19) torch.empty_strided(size=(0,), stride=(0,)) torch.empty_strided(size=(0,), stride=(1,)) torch.empty_strided(size=(0,), stride=(2,)) torch.empty_strided(size=torch.tensor([]).size(), stride=(0,)) # tensor([]) torch.empty_strided(size=(3,), stride=(0,)) torch.empty_strided(size=torch.tensor([8, 3, 6]).size(), stride=(0,)) # tensor([7.4511e-33, 7.4511e-33, 7.4511e-33]) torch.empty_strided(size=(3,), stride=(1,)) torch.empty_strided(size=torch.tensor([8, 3, 6]).size(), stride=(1,)) # tensor([9.7245e-33, 3.1678e-41, 9.6997e-33]) torch.empty_strided(size=(3,), stride=(2,)) torch.empty_strided(size=torch.tensor([8, 3, 6]).size(), stride=(2,)) # tensor([-5.0667e-38, 4.4842e-44, 8.9683e-44]) torch.empty_strided((3, 2), stride=(0, 0)) torch.empty_strided(size=torch.tensor([[8, 3], [6, 0], [2, 9]]).size(), stride=(0, 0)) # tensor([[-8.4397e-35, -8.4397e-35], # [-8.4397e-35, -8.4397e-35], # [-8.4397e-35, -8.4397e-35]]) torch.empty_strided((3, 2), stride=(0, 1)) torch.empty_strided(size=torch.tensor([[8, 3], [6, 0], [2, 9]]).size(), stride=(0, 1)) # tensor([[9.7001e-33, 3.1678e-41], # [9.7001e-33, 3.1678e-41], # [9.7001e-33, 3.1678e-41]]) torch.empty_strided((3, 2), stride=(0, 2)) torch.empty_strided(size=torch.tensor([[8, 3], [6, 0], [2, 9]]).size(), stride=(0, 2)) # tensor([[1.4013e-45, -1.7014e+38], # [1.4013e-45, -1.7014e+38], # [1.4013e-45, -1.7014e+38]]) torch.empty_strided((3, 2), stride=(1, 0)) torch.empty_strided(size=torch.tensor([[8, 3], [6, 0], [2, 9]]).size(), stride=(1, 0)) # tensor([[-8.4397e-35, -8.4397e-35], # [4.5188e-41, 4.5188e-41], # [9.7611e-33, 9.7611e-33]]) torch.empty_strided((3, 2), stride=(1, 1)) torch.empty_strided(size=torch.tensor([[8, 3], [6, 0], [2, 9]]).size(), stride=(1, 1)) # tensor([[-8.4397e-35, 4.5188e-41], # [4.5188e-41, 9.7396e-33], # [9.7396e-33, 3.1678e-41]]) torch.empty_strided((3, 2), stride=(1, 2)) torch.empty_strided(size=torch.tensor([[8, 3], [6, 0], [2, 9]]).size(), stride=(1, 2)) # tensor([[1.7340e-07, 6.8988e-07], # [1.6599e-07, 1.2539e+16], # [6.8988e-07, 2.1707e-18]]) torch.empty_strided((3, 2), stride=(2, 0)) torch.empty_strided(size=torch.tensor([[8, 3], [6, 0], [2, 9]]).size(), stride=(2, 0)) # tensor([[-8.4397e-35, -8.4397e-35], # [9.7265e-33, 9.7265e-33], # [6.6757e-07, 6.6757e-07]]) torch.empty_strided((3, 2), stride=(2, 1)) torch.empty_strided(size=torch.tensor([[8, 3], [6, 0], [2, 9]]).size(), stride=(2, 1)) # tensor([[-8.4397e-35, 4.5188e-41], # [9.6884e-33, 3.1678e-41], # [4.4842e-44, 0.0000e+00]]) torch.empty_strided((3, 2), stride=(2, 2)) torch.empty_strided(size=torch.tensor([[8, 3], [6, 0], [2, 9]]).size(), stride=(2, 2)) # tensor([[6.7121e-07, 1.3085e-11], # [1.3085e-11, 1.6690e+22], # [1.6690e+22, 2.1707e-18]]) etc. torch.empty_strided(size=(3, 2, 4), stride=(0, 1, 2)) # tensor([[[-8.4397e-35, -8.4397e-35, 4.4842e-44, 1.1210e-43], # [4.5188e-41, 4.5188e-41, 0.0000e+00, 0.0000e+00]], # [[-8.4397e-35, -8.4397e-35, 4.4842e-44, 1.1210e-43], # [4.5188e-41, 4.5188e-41, 0.0000e+00, 0.0000e+00]], # [[-8.4397e-35, -8.4397e-35, 4.4842e-44, 1.1210e-43], # [4.5188e-41, 4.5188e-41, 0.0000e+00, 0.0000e+00]]]) torch.empty_strided(size=(3, 2, 4), stride=(0, 1, 2), dtype=torch.int64) # tensor([[[0, 97092179969056, 0, 0], # [97092200351808, 138498049810784, 0, 0]], # [[0, 97092179969056, 0, 0], # [97092200351808, 138498049810784, 0, 0]], # [[0, 97092179969056, 0, 0], # [97092200351808, 138498049810784, 0, 0]]]) torch.empty_strided(size=(3, 2, 4), stride=(0, 1, 2), dtype=torch.complex64) # tensor([[[-8.4397e-35+4.5188e-41j, 9.6886e-33+3.1678e-41j, # 0.0000e+00+0.0000e+00j, 1.3829e-33+3.1678e-41j], # [9.6840e-33+3.1678e-41j, 0.0000e+00+0.0000e+00j, # 9.8336e-33+3.1678e-41j, -3.8910e-25+4.5186e-41j]], # [[-8.4397e-35+4.5188e-41j, 9.6886e-33+3.1678e-41j, # 0.0000e+00+0.0000e+00j, 1.3829e-33+3.1678e-41j], # [9.6840e-33+3.1678e-41j, 0.0000e+00+0.0000e+00j, # 9.8336e-33+3.1678e-41j, -3.8910e-25+4.5186e-41j]], # [[-8.4397e-35+4.5188e-41j, 9.6886e-33+3.1678e-41j, # 0.0000e+00+0.0000e+00j, 1.3829e-33+3.1678e-41j], # [9.6840e-33+3.1678e-41j, 0.0000e+00+0.0000e+00j, # 9.8336e-33+3.1678e-41j, -3.8910e-25+4.5186e-41j]]]) torch.empty_strided(size=(3, 2, 4), stride=(0, 1, 2), dtype=torch.bool) # tensor([[[True, True, True, False], # [True, True, True, False]], # [[True, True, True, False], # [True, True, True, False]], # [[True, True, True, False], # [True, True, True, False]]])
Top comments (0)