![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Pytorch
Zzz_啥都不会
这个作者很懒,什么都没留下…
展开
-
Pytorch学习-训练模型的3种方法
Pytorch通常需要用户编写自定义训练循环,训练循环的代码风格因人而异。有3类典型的训练循环代码风格:脚本形式训练循环,函数形式训练循环,类形式训练循环。下面以minist数据集的分类模型的训练为例,演示这3种训练模型的风格。准备数据import torch from torch import nn from torchkeras import summary,Model import torchvision from torchvision import transformstr原创 2020-07-29 10:10:48 · 4744 阅读 · 1 评论 -
Pytorch学习-构建模型的三种方法
可以使用以下3种方式构建模型:1,继承nn.Module基类构建自定义模型。2,使用nn.Sequential按层顺序构建模型。3,继承nn.Module基类构建模型并辅助应用模型容器进行封装(nn.Sequential,nn.ModuleList,nn.ModuleDict)。其中 第1种方式最为常见,第2种方式最简单,第3种方式最为灵活也较为复杂。推荐使用第1种方式构建模型。 继承nn.Module基类时,如果想调用fit、compile等函数,可以使用如下方法获取Model的函数: net原创 2020-07-27 11:23:41 · 1773 阅读 · 0 评论 -
Pytorch学习-损失函数和正则化
损失函数说明一般来说,监督学习的目标函数由损失函数和正则化项组成。(Objective = Loss + Regularization)Pytorch中的损失函数一般在训练模型时候指定。注意Pytorch中内置的损失函数的参数和tensorflow不同,是y_pred在前,y_true在后,而Tensorflow是y_true在前,y_pred在后。对于回归模型,通常使用的内置损失函数是均方损失函数nn.MSELoss 。对于二分类模型,通常使用的是二元交叉熵损失函数nn.BCELoss (输入原创 2020-07-23 11:45:15 · 10781 阅读 · 2 评论 -
Pytorch学习-模型层layers
深度学习模型一般由各种模型层组合而成。torch.nn中内置了非常丰富的各种模型层。它们都属于nn.Module的子类,具备参数管理功能。例如:nn.Linear, nn.Flatten, nn.Dropout, nn.BatchNorm2dnn.Conv2d,nn.AvgPool2d,nn.Conv1d,nn.ConvTranspose2dnn.Embedding,nn.GRU,nn.LSTMnn.Transformer如果这些内置模型层不能够满足需求,我们也可以通过继承nn.Module基原创 2020-07-19 10:08:00 · 1405 阅读 · 0 评论 -
Pytorch学习-Dataset和DataLoader
Dataset和DataLoader使用Dataset创建数据集¶Dataset创建数据集常用的方法有:1、使用 torch.utils.data.TensorDataset 根据Tensor创建数据集(numpy的array,Pandas的DataFrame需要先转换成Tensor)。2、使用 torchvision.datasets.ImageFolder 根据图片目录创建图片数据集。3、继承 torch.utils.data.Dataset 创建自定义数据集。此外,还可以通过torch.原创 2020-07-17 13:19:51 · 1324 阅读 · 0 评论 -
Pytorch学习-nn.functional和nn.Module
一,nn.functional 和 nn.ModulePytorch和神经网络相关的功能组件大多都封装在 torch.nn模块下。这些功能组件的绝大部分既有函数形式实现,也有类形式实现。其中nn.functional(一般引入后改名为F)有各种功能组件的函数实现。例如:(激活函数)F.relu F.sigmoid F.tanh F.softmax (模型层)F.linear F.conv2d F.max_pool2d F.dropout2d F.embedding (损失函数)F.binary原创 2020-07-12 11:26:18 · 716 阅读 · 0 评论 -
Pytorch学习-张量的合并和分割
可以用torch.cat方法和torch.stack方法将多个张量合并,可以用torch.split方法把一个张量分割成多个张量。torch.cat和torch.stack有略微的区别,torch.cat是连接,不会增加维度,而torch.stack是堆叠,会增加维度。a = torch.tensor([[1, 2],[3,4]])b = torch.tensor([[5,6],[7,8]])c = torch.tensor([[9,10],[11,12]])abc_cat = torch.ca原创 2020-07-11 10:23:59 · 4569 阅读 · 0 评论 -
Pytorch学习-张量的维度变换
维度变换相关函数主要有 torch.reshape(或者调用张量的view方法), torch.squeeze, torch.unsqueeze, torch.transposetorch.reshape 可以改变张量的形状。torch.squeeze 可以减少维度。torch.unsqueeze 可以增加维度。torch.transpose 可以交换维度。import torchtorch.manual_seed(0)minval,maxval = 0, 255a = (minval +原创 2020-07-11 09:50:16 · 5275 阅读 · 0 评论 -
Pytorch学习-张量的索引切片
张量的索引切片张量的索引切片方式和numpy几乎是一样的。切片时支持缺省参数和省略号。可以通过索引和切片对部分元素进行修改。此外,对于不规则的切片提取,可以使用torch.index_select, torch.masked_select, torch.take如果要通过修改张量的某些元素得到新的张量,可以使用torch.where,torch.masked_fill,torch.index_filltorch.manual_seed(0)minval,maxval = 0,10t = tor原创 2020-07-11 10:24:39 · 2783 阅读 · 0 评论 -
pytorch学习 1.1 结构化数据建模流程范例
1.1 结构化数据建模流程范例import osimport datetime#打印时间def printbar(): nowtime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') print("\n"+"=========="*8 + "%s"%nowtime)#mac系统上pytorch和matplotlib在jupyter中同时跑需要更改环境变量os.environ["KMP_DUPLICATE_LIB_原创 2020-07-11 10:26:28 · 569 阅读 · 0 评论 -
pytorch学习之nn.BCELoss与nn.CrossEntropyLoss的区别
BCELoss与CrossEntropyLoss都是用于分类问题。可以知道,BCELoss是Binary CrossEntropyLoss的缩写,BCELoss是CrossEntropyLoss的一个特例,只用于二分类问题,而CrossEntropyLoss可以用于二分类,也可以用于多分类。使用nn.BCELoss需要在该层前面加上Sigmoid函数。使用nn.CrossEntropyLoss会自动加上Sofrmax层。...原创 2020-07-11 10:26:11 · 2333 阅读 · 0 评论