成都网站建设哪里好点,老板让我做镜像网站犯法吗,制作网站的成本,现在推广网站最好的方式张量概念
张量是什么#xff1f; 单个元素叫标量#xff08;scalar#xff09;#xff0c;一个序列叫向量#xff08;vector#xff09;#xff0c;多个序列组成的平面叫矩阵#xff08;matrix#xff09;#xff0c;多个平面组成的立方体叫张量#xff08;tensor 单个元素叫标量scalar一个序列叫向量vector多个序列组成的平面叫矩阵matrix多个平面组成的立方体叫张量tensor。在深度学习中标量、向量、矩阵、高维矩阵都统称为张量。在pytorch中一个Tensor内部包含数据和导数两部分。
Pytorch的基本数据结构是张量Tensor。张量即多维数组。Pytorch的张量和numpy中的array很类似。 在Pytorch中我们使用张量对模型的输入和输出以及模型的参数进行编码。最重要的是数据转化为张量可以方便在GPU上运行这样运行速度可以大大加快。
一、张量的数据类型如何创建张量
torch.float64(torch.double), torch.float32(torch.float), 最常用 torch.float16, torch.int64(torch.long), torch.int32(torch.int), torch.int16, torch.int8, torch.uint8, torch.bool 可以直接使用指定类型 **也使用特定函数创建**torch.IntTensor()、torch.tensor()等价于torch.FloatTensor、torch.BoolTensor() 注意 torch.IntTensor(3)创建的张量并不是 tensor(3)或者tensor([3])而是随机的三个整数 torch.Tensor()参数 datadata的数据类型可以是列表list、元组tuple、numpy数组ndarray、纯量scalar又叫标量和其他的一些数据类型。 dtype该参数可选参数默认为None如果不进行设置生成的Tensor数据类型会拷贝data中传入的参数的数据类型比如data中的数据类型为float则默认会生成数据类型为torch.FloatTensor的Tensor。 device该参数可选参数默认为None如果不进行设置会在当前的设备上为生成的Tensor分配内存。 requires_grad该参数为可选参数默认为False在为False的情况下创建的Tensor不能进行梯度运算改为True时则可以计算梯度。 pin_memory该参数为可选参数默认为False如果设置为True则在固定内存中分配当前Tensor不过只适用于CPU中的Tensor。
不同类型转换 注意区分 torch.tensor 和 torch.Tensor 所以说 torch.Tensor 等价于 torch.FloatTensor
二、张量维度
不同类型的数据可以用不同维度(dimension)的张量来表示。 标量为0维张量向量为1维张量矩阵为2维张量。 彩色图像有rgb三个通道可以表示为3维张量。 视频还有时间维可以表示为4维张量。 可以简单地总结为有几层中括号就是多少维的张量。
三、张量尺寸
可以使用 shape属性或者 size()方法查看张量在每一维的长度. 可以使用view方法改变张量的尺寸。 如果view方法改变尺寸失败可以使用reshape方法.
四、张量和numpy数组
可以用numpy方法从Tensor得到numpy数组也可以用torch.from_numpy从numpy数组得到Tensor。 这两种方法关联的Tensor和numpy数组是共享数据内存的。 如果改变其中一个另外一个的值也会发生改变。 如果有需要可以用张量的clone方法拷贝张量中断这种关联。 此外还可以使用item方法从标量张量得到对应的Python数值。 使用tolist方法从张量得到对应的Python数值列表。 tensor.add_(1) #给 tensor增加1arr也随之改变 等价于 torch.add(tensor,1,out tensor)
#torch.from_numpy函数从numpy数组得到Tensor
arr np.zeros(3) # 1*3 然后元素都是0
tensor torch.from_numpy(arr)# numpy方法从Tensor得到numpy数组
tensor torch.zeros(3)
arr tensor.numpy()
参考https://github.com/lyhue1991/eat_pytorch_in_20_days