深度学习 02 Tensor的创建及其方法、属性。

目录

1.导入python计算库

2.张量的属性和方法

1)属性

2)方法

a.计算维度

 b.这两种创建有啥区别

c.矩阵的加法

d.矩阵的乘法

e.索引方法

f.view操作可以改变矩阵的维度

g.转化方法(numpy与torch的相互转化),两者之间的协同操作


如果觉得对你有帮助,可以点赞收藏呢。

1.导入python计算库

import torch
import numpy as np

为了方便torch的相关计算,以及torch和numpy可以相互转化

2.利用tensor的API去创建tensor格式的数据

tensor.empty(3,4,dtype=torch.float)#创建一个三行四列的tensor格式的数据
tensor([[1.1112e-38, 9.5511e-39, 1.0102e-38, 1.0286e-38, 1.0194e-38],
        [9.6429e-39, 9.2755e-39, 9.1837e-39, 9.3674e-39, 1.0745e-38],
        [1.0653e-38, 9.5510e-39, 1.0561e-38, 1.0194e-38, 1.1112e-38]])

tensor.zeros(3,4)#创建一个三行四列的tensor格式数值为0.的数据
tensor([[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]])

tensor.ones(3,4)#创建一个三行四列的tensor格式,数值为1.的数据
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])

torch.rand([3,4])#创建一个三行四列的tensor格式,数值为随机数据,范围为(0,1)不包括0和1
tensor([[0.3205, 0.8217, 0.6920, 0.7952],
        [0.5324, 0.2654, 0.6178, 0.3416],
        [0.1683, 0.2586, 0.5454, 0.4035]])

torch.randint(low=1,high=5,size=(3,4))#创建一个大小为三行四列的数据,范围为(1,5)不包括1和5
tensor([[3, 3, 4, 1],
        [2, 3, 2, 1],
        [3, 1, 4, 4]])

上面的(a,b,dtype=torch.long)或者(a,b,dtype=torch.int)或者(a,b,dtype=torch.lfloat)可以表示三种不同数据类型的矩阵,其中a,b表示a行b列,表示大小(size);

而(a,b)表示a,b(a行,b列)大小矩阵(size),数据类型默认为float。

以上的创建方法比较常用。

深度学习 02 Tensor的创建及其方法、属性。_第1张图片

2.张量的属性和方法

1)属性

t1=torch.empty([3,5])
tensor([[8.4817e-39, 9.6428e-39, 1.1112e-38, 9.5511e-39, 1.0102e-38],
        [1.0286e-38, 1.0194e-38, 9.6429e-39, 9.2755e-39, 9.1837e-39],
        [9.3674e-39, 1.0745e-38, 1.0653e-38, 9.5510e-39, 1.0561e-38]])
t1.shape
torch.Size([3, 5])#可以计算出矩阵的大小

2)方法

a.计算维度

t1.dim() #dim表示矩阵是维数,有1维的、2维的、3维的。下面的2就表示这个矩阵就是2维的
2

 b.这两种创建有啥区别

x=torch.tensor([5.,3])
x
tensor([5., 3.])

x=x.new_ones(5,3,dtype=torch.double)
x
tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]], dtype=torch.float64)

与下面这种创建方法有什么区别呢:希望哪一位大神看了之后可以在下方留言,我感觉会是numpy类型,但是numpy的类型为dtype=float32。

torch.ones(5,3)
tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]])

c.矩阵的加法

分别创建两个矩阵,然后进行加法,如下:

x1=torch.ones(5,3)##创建两个矩阵
x2=torch.zeros(5,3)

x=x1+x2#两种方式都可以
x=torch.add(x1,x2)
x
tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]])

d.矩阵的乘法

x1=torch.ones(5,3)##创建两个矩阵
x2=torch.zeros(5,3)

x=x1*x2#两种方式都可以
x=torch.mul(x1,x2)
x
tensor([[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]])

e.索引方法

x[:3]#:表示取所有元素,3表示取前三行元素
tensor([[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]])

f.view操作可以改变矩阵的维度

x=torch.randn(4,4)
y=x.view(16)
z=x.view(-1,2)
m=x.view(-1,8)
print(x.size(),y.size(),z.size(),m.size())
torch.Size([4, 4]) torch.Size([16]) torch.Size([8, 2]) torch.Size([2, 8])

改变之后的结果为:

深度学习 02 Tensor的创建及其方法、属性。_第2张图片

view(-1,2)中的-1表示的是自动计算。

g.转化方法(numpy与torch的相互转化),两者之间的协同操作

首先是torch转化为numpy

深度学习 02 Tensor的创建及其方法、属性。_第3张图片

其次是numpy转化为torch类型

深度学习 02 Tensor的创建及其方法、属性。_第4张图片

 我发现转化完成之后 array和tensor 数据后面都有 数据类型;而当我们用numpy和tensor创建的时候后面就不显示数据类型。

你可能感兴趣的:(pytorch,python,深度学习,pytorch,人工智能,视觉检测)