前言:
这里面主要讲解一下创建一个Tensor 对象的不同方法
目录:
一 numpy 创建
a = np.array([2, 4.4])
ta = torch.from_numpy(a)
a = np.ones([2, 3])
ta = torch.from_numpy(a)
trace(ta)
二 list 创建
其中tensor 有大写和小写之分
最好用小写的:
小写Tensor 输入参数: Numpy ,list 等数据
大写Tensor: 输入参数: shape, 也可以是list
#通过list
def by_list():
a = torch.tensor([2,3.2])
a = torch.FloatTensor([2,3.2])
a = torch.FloatTensor(2,3)
trace(a)
三 empty 创建
a = torch.empty(1)
a = torch.FloatTensor(2,2)
a = torch.IntTensor(2,2)
四 set_default_type
torch.set_default_tensor_type(torch.DoubleTensor)
五 随机数创建
5.1 a = torch.rand(3,3)
创建一个dimension=2 ,[3,3]的矩阵
5.2 b = torch.rand_like(a)
读a 的 shape,生成一个随机矩阵shape 跟它一致
5.3 c = torch.randint(low=1, high=3, size=[3,3])
生成一个int 型的[3,3] 随机数组
5.4 d = torch.randn(3,3)
生成一个正太分布的[3,3] 矩阵
N(0,1)
5.5 e = torch.normal(mean= torch.full([10],0.0), std=torch.arange(start=1, end=0, step=-0.1))
生成一个均值为0, 方差从1到0.1的,dimension =1, size=10的随机数组
六 torch.full
a = torch.full([2,3],7)
b = torch.full([],7)
c = torch.full([1],7)
七 arange&linespace
7.1 a = torch.arange(start=0, end=12, step=3)
从0 开始取,下一个值为前一个值+step
7.2 torch.linspace(start=0,end=12,steps=3)
这个张量包含了从start到end(包括端点)的等距的steps个数据点。
如上 总距离d= end-star =12
steps =3 ,有3个点,则总共有2段
则间隔为interval = 12/2 =6
7.3 c = torch.logspace(start=0, end=-1,steps =10)
先对区间0,-1 划分10个等分:为a
然后取值
八 ones|zeros|eye
one = torch.ones(3,3)
全1的3*3 矩阵
zero = torch.zeros(3,3)
全0的3*3矩阵
eye = torch.eye(3,3)
3*3 对角矩阵
九 randperm
a = torch.rand((10,2))
#将0~n-1(包括0和n-1)随机打乱后获得的数字序列,函数名是random permutation缩写
idx = torch.randperm(10)
b = a[idx[0:2]]