
PyTorch的攀登年华
从理论到实战,切中初学者的痛点,一起学习更多的PyTorch使用技巧
逝去〃年华
这个作者很懒,什么都没留下…
展开
-
pytorch Torch device的基本用法
Torch device的基本用法print("Default Device:{}".format(torch.Tensor([4,5,6]).device))device = torch.Tensor([1,2,3],device="cpu:0").deviceprint(device)cpu1 = torch.device("cpu:0") # 标注指定为cpuprint(cpu1)gpu = torch.device(0) # 直接指定为gpu,不需要声明print(gpu.原创 2022-03-12 08:57:37 · 1793 阅读 · 0 评论 -
pytorch矩阵运算
目录:1.对角矩阵的设置2.矩阵的迹3.上三角矩阵与下三角矩阵4.矩阵的乘积mm和bmm5.矩阵的相乘再相加6.批量矩阵相乘再相加7.矩阵乘向量再相加8.特征值及特征向量1.对角矩阵的设置a = torch.rand(2)print(a)# diag设置对角矩阵,diagonal等于0,设置主对角线x = torch.diag(a,diagonal=0) # iagonal 对角线print(x)# diagonal大于0,设置主对角线上diagonal对应位置的值x = torch.d原创 2021-04-19 21:59:01 · 1152 阅读 · 1 评论 -
pytorch的数值比较运算
目录:1. 大于、大于等于、小于、小于等于、不相等2. 最大值,最小值3. 排序4. topk1. 大于、大于等于、小于、小于等于、不相等# 元素相等返回1,不相等返回0.x = torch.Tensor([[2,3,5],[4,7,9]])y = torch.Tensor([[2,4,5],[4,8,9]])z = torch.Tensor([[2,3,5],[4,7,9]])print(torch.eq(x,y))# 比较两个Tensor是否相等print(torch.equal(x,z原创 2021-04-14 16:35:32 · 1694 阅读 · 1 评论 -
pytorch规约计算(累和、累积、均值、方差、标准差、P范数等)
目录一、什么是规约计算?1.累积、累和、所有元素的乘积、所有元素的和2.p-norm距离3.均值、中位数、众数、方差和标准差一、什么是规约计算?一般是指分组聚合计算,常见的由均值、方差等,该计算的特点是使分组内或所有的元素参与计算得到统计性的结果,常见的有如下几种:1.累积、累和、所有元素的乘积、所有元素的和# 累积x = torch.Tensor([[2,3,4,5,6],[9,8,7,6,5]])print(x)print(torch.cumprod(x,dim=0)) # cumpro原创 2021-04-14 14:42:56 · 5885 阅读 · 2 评论 -
pytorch的数学计算(元素级别)
目录1.绝对值、求和、三角函数2.相乘再相加、相除再相加3.向上取整、向下取整、夹逼函数、乘法、取相反数、取倒数、取平方根倒数和平方根4.除法、余数、取小数、四舍五入、指数运算5.自然对数、平滑对数、幂运算6.线性插值7.Sigmoid函数,sign函数,截断值1.绝对值、求和、三角函数a = torch.Tensor([-1,0,1])print(torch.abs(a)) # 绝对值print(torch.add(a,3)) # 求和print(torch.cos(a))print(to原创 2021-04-13 12:35:04 · 736 阅读 · 2 评论 -
pytorch数据的保存与加载(数据的持久化与高并发)
目录1. pytorch数据的保存与加载2.并发量的获取与设置1. pytorch数据的保存与加载模型训练的权重参数需要持久化以产生模型文件后再次加载,进而通过预测任务进行预测# 序列化模型(数据保存)x = torch.randn(2,3)# 序列化即对此进行外部存储 使用torch.save方法(数据加载)torch.save(x,"randn")# 反序列化 对外部存储进行加载 使用torch.load()方法x_load = torch.load("randn")print(x_原创 2021-04-12 17:09:00 · 808 阅读 · 1 评论 -
pytorch的随机抽样
目录1.如何设置随机种子?2.如何进行伯努利分布采样?3.如何进行多项式分布抽样?4.如何进行标准分布抽样?1.如何设置随机种子?torch.manual_seed(123) #manual 手控的# 如没有手动设置,则返回系统生成的随机种子;否则,返回手动设置的随机种子seed = torch.initial_seed()print("seed:{}".format(seed))# 返回随机生成器的状态state = torch.get_rng_state() # s原创 2021-04-12 15:30:30 · 1219 阅读 · 3 评论 -
pytorch索引、切片、连接和换位
1.torch.cat 使用dim对Tensor进行指定拼接Tensor = torch.ones(2,3)print(torch.cat([Tensor,Tensor]))print(torch.cat([Tensor,Tensor],dim=0)) # 纵向拼接为一个矩阵print(torch.cat([Tensor,Tensor],dim=1).shape) # 横向拼接为一个矩阵 # torch.stack 方法进行拼接print(torch.stack([Tensor,Tensor原创 2021-04-12 11:08:25 · 419 阅读 · 3 评论 -
pytorch的基本方法
1.如何判断一个对象是否为Tensor?## 1.如何判断一个对象是否为Tensor?obj = np.arange(1,10) # arange() 主要是用于生成数组print(torch.is_tensor(obj))obj1 = torch.Tensor(10)print(obj1)print(torch.is_tensor(obj1))-----------------------------------------------------------result:False原创 2021-04-10 10:58:53 · 715 阅读 · 7 评论 -
如何判断一个对象是否为Tensor?
如何判断一个对象是否为Tensor?import torchimport numpy as npobj = np.arange(1,10) # arange() 主要是用于生成数组# [1,2,3,4,5,6,7,8,9]print(torch.is_tensor(obj))obj1 = torch.Tensor(10) # 生成单精度浮点类型的张量# tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])print(torch.is_ten原创 2021-04-08 11:00:32 · 2045 阅读 · 0 评论 -
pytorch实现逻辑回归
一、pytorch实现逻辑回归逻辑回归是非常经典的分类算法,是用于分类任务,如垃圾分类任务,情感分类任务等都可以使用逻辑回归。接下来使用逻辑回归模型完成一个二分类任务:# 使用逻辑回归完成一个二分类任务# 数据准备import torchimport matplotlib.pyplot as pltx1 = torch.randn(365)+1.5 # randn():输出一个形状为size的标准正态分布Tensorx2 = torch.randn(365)-1.5#print(x1原创 2021-04-07 14:45:38 · 2397 阅读 · 6 评论 -
pytorch实现多项式回归
pytorch实现多项式回归一元线性回归模型虽然能拟合出一条直线,但精度依然欠佳,拟合的直线并不能穿过每个点,对于复杂的拟合任务需要多项式回归拟合,提高精度。多项式回归拟合就是将特征的次数提高,线性回归的次数使一次的,实际我们可以使用二次、三次、四次甚至更高的次数进行拟合。由于模型的复杂度增加会带来过拟合的风险,因此需要采取正则化损失的方式减少过拟合,提高模型泛化能力。希望大家可以自己动手,通过一些小的训练掌握pytorch(案例中有些观察数据格式的代码,大家可以自己注释掉)# 相较于一元线性回归模型,原创 2021-04-06 11:49:42 · 1370 阅读 · 2 评论 -
pytroch实现线性回归
pytorch实现线性回归代码练习实例欢迎大家指正,希望可以通过小的练习提升对于pytorch的掌握# 随机初始化一个二维数据集,使用朋友torch训练一个回归模型import numpy as npimport randomimport matplotlib.pyplot as pltx = np.arange(20)y = np.array([5*x[i] + random.randint(1,20) for i in range(len(x))]) # random.randin原创 2021-04-05 20:36:47 · 149 阅读 · 0 评论 -
pytorch 将标签转为one-hot编码
将标签转为one-hot编码我定义为一个函数,返回为布尔值,需要类型转换def one_hot(label, N=None): # 对标签进行独热编码 label = np.asarray(label) # np.asarray() 对于传入list为深拷贝, 传入array为浅拷贝,即改变传入的值,拷贝的数据会跟着变化 if N is None: N = ind.max() + 1 return np.arange(N) == np.repea原创 2021-03-24 16:16:39 · 1748 阅读 · 0 评论 -
使用pytorch快速搭建神经网络的两种方式
假设需要搭建一个3层神经网络:输入层数为5,中间隐藏层的维度为10,输出层的维度为2,激活函数使用ReLU激活函数第一种方法使用nn.Sequential的方式定义,将网络以序列的方式进行组装,使用每个层前面的输出作为输入,内部会自动维护层与层之间的权重矩阵以及偏置向量,方式如下:import torchmodel = torch.nn.Sequential( torch.nn.Linear(5, 10), torch.nn.ReLU(), torch.nn.Linear原创 2021-03-03 14:43:24 · 476 阅读 · 2 评论