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