pytorch学习
文章平均质量分 79
永不言弃的小颖子
这个作者很懒,什么都没留下…
展开
-
Pytorch学习笔记(17)———训练一个性别2分类网络
转载自https://www.jianshu.com/p/1ec6075c0ab6性别识别是一个2分类问题,网上应该有不少的研究。比如商汤/旷世科技 早已经将人脸属性继承到SDK中,可以供API在线调用,还有针对Android, ios的SDK, 本人测试过,速度很精度都很不错。简单起见,直接采用预训练模型微调的方式训练一个性别分类器。网络模型选择torchvision.models中集成了几个常见的网络模型,ResNet, AlexNet, VGG, DenseNet, SqueezeNet。 A原创 2022-04-26 15:37:27 · 1276 阅读 · 1 评论 -
Pytorch学习笔记(16)———预训练模型微调
完整工程工程目录结构Codeimport torchimport torch.optim as optimimport torch.nn as nnfrom torch.utils.data import DataLoaderfrom torchvision.datasets import ImageFolderimport torchvision.models as modelsimport torchvision.transforms as transformsimport n原创 2022-04-26 14:39:15 · 835 阅读 · 0 评论 -
Pytorch并行训练方法-单机多卡
简单方便的 nn.DataParallelDataParallel 可以帮助我们(使用单进程控)将模型和数据加载到多个 GPU 中,控制数据在 GPU 之间的流动,协同不同 GPU 上的模型进行并行训练(细粒度的方法有 scatter,gather 等等)。DataParallel 使用起来非常方便,我们只需要用 DataParallel 包装模型,再设置一些参数即可。需要定义的参数包括:参与训练的 GPU 有哪些,device_ids=gpus;用于汇总梯度的 GPU 是哪个,output_dev原创 2022-04-02 10:21:58 · 4851 阅读 · 0 评论 -
Python中多进程
来自东哥IT笔记现在很多CPU都支持多核,甚至是手机都已经开始支持多核了。而Python的GIL(Global Interpreter Locko)则使得其没法使用这些多核带来的优势。还好从Python2.6开始,引入了multiprocessing模块,我们终于可以使用多核带来的便利了。使用多进程的优点使用多进程的缺点使用multiprocessing来创建多进程Process的子类化创建进程池本文并不是一个multiprocessing的全面的介绍,假如你想全面的了解它,可以参见官方的原创 2022-04-01 11:15:38 · 7413 阅读 · 0 评论 -
Pytorch学习笔记(15)———模型的保存与加载
在深度学习中,模型的保存和加载很重要,当我们辛辛苦苦训练好的一个网络模型,自然需要将训练好的模型保存为文件。在测试使用时候,又需要将保存在磁盘的模型文件加载调用。在pytorch中网络模型定义为torch.nn.Module的子类的对象。因此模型的保存与加载涉及到2个重要概念——对象的序列化和反序列化。...原创 2022-03-25 16:29:01 · 583 阅读 · 0 评论 -
Pytorch学习笔记(14)———自定义CNN网络训练FashionMNIST数据集
入门深度学习,一般都是跑最经典的MNIST+LeNet-5, LeNet-5网络结构简单,MNIST数据集也不是很大,对于初学者来说很方便和友好。作为进阶,熟悉Pytorch基本用法之后,跃跃欲试,想自己手写一个CNN网络,在一个数据集上进行训练和测试。FashionMNIST数据集作为进阶的练习很不错,本实验将基于FashionMNIST数据集从头到尾训练测试一个CNN网络。FashionMNIST数据集https://github.com/zalandoresearch/fashion-mnist转载 2021-11-17 15:13:13 · 1476 阅读 · 0 评论 -
Pytorch学习笔记(13)———孪生网络训练数据集制作
import torchfrom torch.utils.data import Dataset,DataLoaderimport linecacheimport randomfrom PIL import Imageclass MyDataset(Dataset): def __init__(self, txt_file, transform=None): self.transform = transform self.txt = txt_file原创 2021-11-16 20:06:27 · 878 阅读 · 1 评论 -
梯度积累的作用(转载)
作者:一只滑行的蜗牛链接:https://www.zhihu.com/question/435093513/answer/1629791007来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。for i, (images, target) in enumerate(train_loader): # 1. input output images = images.cuda(non_blocking=True) target = torch.from原创 2021-11-15 17:23:10 · 564 阅读 · 0 评论 -
熵,交叉熵,KL散度公式与计算实例 (转载学习)
交叉熵(Cross Entropy)和KL散度(Kullback–Leibler Divergence)是机器学习中极其常用的两个指标,用来衡量两个概率分布的相似度,常被作为Loss Function。本文给出熵、相对熵、交叉熵的定义,用python实现算法并与pytorch中对应的函数结果对比验证。熵(Entropy)此处为方便讨论及与后续实例呼应,所有随机变量均为离散随机变量。定义随机变量x在概率分布p的熵:import torchimport numpy as npfrom torch.原创 2021-11-11 19:05:52 · 1926 阅读 · 0 评论 -
Pytorch常用的交叉熵损失函数CrossEntropyLoss() (转载学习)
在使用pytorch深度学习框架,计算损失函数的时候经常会遇到这么一个函数:nn.CrossEntropyLoss()该损失函数结合了nn.LogSoftmax()和nn.NLLLoss()两个函数。它在做分类(具体几类)训练的时候是非常有用的。在训练过程中,对于每个类分配权值,可选的参数权值应该是一个1D张量。当你有一个不平衡的训练集时,这是非常有用的。那么针对这个函数,下面将做详细的介绍。什么是交叉熵?交叉熵主要是用来判定实际的输出与期望的输出的接近程度,为什么这么说呢,举个例子:在做分类的训原创 2021-11-11 18:49:08 · 356 阅读 · 0 评论 -
pytorch里的pack_padded_sequence和pad_packed_sequence解析
为什么要用pack_padded_sequence在使用深度学习特别是LSTM进行文本分析时,经常会遇到文本长度不一样的情况,此时就需要对同一个batch中的不同文本使用padding的方式进行文本长度对齐,方便将训练数据输入到LSTM模型进行训练,同时为了保证模型训练的精度,应该同时告诉LSTM相关padding的情况,此时,pytorch中的pack_padded_sequence就有了用武之地。直接从文本处理开始假设我们有如下四段文字:1.To the world you may be one转载 2021-10-01 10:40:32 · 1323 阅读 · 0 评论 -
python中保存列表和字典
python保存列表(1)保存为.npy文件:先将列表转为np.array,再进行保存import numpy as npgraphTable = [ [[0,3],[1,3],1,'1'], #A-B [[1,3],[2,3],1,'2'], #B-C [[2,3],[2,1],2,'3'], #C-H [[1,3],[1,2],1,'4'], #B-D [[1,2],[1,1],原创 2021-09-28 21:56:20 · 4174 阅读 · 0 评论 -
python遍历目录的方法
简单暴力法-递归假设在 E 盘中,有个名为“Python”的文件夹;该文件夹中也有两个文件夹,分别是“A”和“B”;另外,在“A”文件夹中还有一个 “results.txt” 的文本文件。因此,“Python”文件夹的文件结构如下:Python|--A| |--results.txt|--B我们可以从上述看出,一个文件夹其实是一个树型的数据结构。遍历树的最简单、最暴力的办法就是递归。因此,遍历“Python”的文件夹的代码可以这么写:# -*- coding: UTF-8 -*-impo转载 2021-09-28 21:28:35 · 10818 阅读 · 1 评论 -
Pytorch学习笔记(12)———学习率调整策略
关于学习率调整,pytorch提供了torch.optim.lr_scheduler主要提供了几个类:torch.optim.lr_scheduler.LambdaLrtorch.optim.lr_scheduler.StepLRtorch.optim.lr_scheduler.MultiStepLRtorch.optim.lr_scheduler.ExponentialLRtorch.optim.lr_sheduler.CosineAnneaingLRtorch.optim.lr_sche原创 2021-09-21 22:29:15 · 3168 阅读 · 0 评论 -
Pytorch学习笔记(11)———迁移学习Transfer Learning
在训练深度学习模型时,有时候我们没有海量的训练样本,只有少数的训练样本(比如几百个图片),几百个训练样本显然对于深度学习远远不够。这时候,我们可以使用别人预训练好的网络模型权重,在此基础上进行训练,这就引入了一个概念——迁移学习(Transfer Learning)。什么是迁移学习迁移学习(Transfer Learning,TL)对于人类来说,就是掌握举一反三的学习能力。比如我们学会骑自行车后,学骑摩托车就很简单了;在学会打羽毛球之后,再学打网球也就没那么难了。对于计算机而言,所谓迁移学习,就是能让现原创 2021-09-21 12:44:33 · 538 阅读 · 0 评论 -
Pytorch学习笔记(7)———Pytorch网络结构可视化
使用pytorch定义网络结构之后,为了直观起见,需要可视化网络结构,以图的形式显示出来。pytorch网络结构可视化可以采用tensorboardX。tensorboardX首先需要安装tensorboard, tensorflow。pip install tensorflowpip install tensorboardpip install tensorboardX实验首先定义一个CNN网络,LetNet-5为例import torchimport torch.nn as n原创 2021-09-11 22:43:45 · 972 阅读 · 0 评论 -
Pytorch学习笔记(6)———定义一个CNN网络
使用pytorch定义一个简单LetNet-5的网络。import torchimport torch.nn as nnimport torch.nn.functional as F'''CNN计算(H - k +2 * P) / S + 1(W - k +2 * P) / S + 1LetNet-5 input: 32*32*3out_conv1 = (32-5)+1 = 28 max_pool1 = 28 / 2 = 14out_conv2 = (14 - 5) + 1原创 2021-09-11 17:55:44 · 286 阅读 · 0 评论 -
Pytorch学习笔记(8)———构建CNN网络(下)
pytorch中构建CNN网络之前的章节中,安装pytorch官网的教程,已经实现了LetNet-5网络的构建以及可视化。本文将继续探索构建CNN网络的方式。将列举4种方式。torch.nn.Module 类torch.nn.Module类是所有神经网络的基类。因此构建一个神经网络,需要继承于torch.nn.Module。神经网络构建的基本格式import torch.nn as nnimport torch.nn.functional as Fclass Model(nn.Modul原创 2021-09-11 23:31:34 · 290 阅读 · 0 评论 -
Pytorch学习笔记(2)——Tensor
Tensor的引入对于学习和使用一个开源库/框架,开发者最关心的2个问题:如何传参数,如何调用API接口。 参数一般就是指数据类型/数据结构类型, API接口具体指可以调用的函数、方法。Tensor是pytorh中的数据类型,表示一个N dims张量。在深度学习中,输入/输出数据,网络参数都用Tensor表示。每种深度学习框架都有其数据结构:Framework数据类型特点CaffeBlobN维矩阵TensorflowTensorN维矩阵PytorchTen原创 2021-09-11 16:06:56 · 208 阅读 · 0 评论 -
Pytorch学习笔记(5)———图像的加载/读取方式
图像加载问题使用pytorch制作图像数据集时,需要将存储在磁盘、硬盘的图像读取到内存中,涉及到图像I/O问题。在python中,图像处理主要采用的库:skimage, opencv-python, Pillow (PIL)。 这三个库均提供了图像读取的方法。三种主流图像处理库的比较:库函数/方法返回值图像像素格式像素值范围图像矩阵表示skimageio.imread(xxx)numpy.ndarrayRGB[0, 255](H X W X C)cv2c原创 2021-09-11 17:48:46 · 1660 阅读 · 0 评论 -
Pytorch学习笔记(3)———transforms变换
Why transforms?一般情况下收集到的图像样本在尺寸,亮度等方面存在差异,在深度学习中,我们希望样本分布是独立同分布的,因此需要对样本进行归一化预处理。有时候只能获取到少量的样本数据,获取数量较多的样本不容易。但是样本数量太少训练的模型精度会比较低,为了解决这样的问题,往往需要做数据增加data arguement, 数据增加的途径就是通过一些变换达到目的。pytorch中的transforms在pytorch中,transforms位于 torchvision.transforms原创 2021-09-11 16:55:25 · 723 阅读 · 0 评论 -
Pytorch学习笔记(4)———自定义数据集
在训练深度学习模型之前,样本集的制作非常重要。在pytorch中,提供了一些接口和类,方便我们定义自己的数据集合,下面完整的试验自定义样本集的整个流程。实验过程1.收集图像样本以简单的猫狗二分类为例,可以在网上下载一些猫狗图片。创建以下目录:data-------------根目录data/test-------测试集data/train------训练集data/val--------验证集在test/train/val之下分别创建2个文件夹,dog, cat;cat, dog文件夹下原创 2021-09-11 17:35:53 · 1768 阅读 · 0 评论 -
Pytorch学习笔记(10)———训练并测试CNN网络
本章节内容将在CIFAR10数据集上训练一个简单的CNN网络:基于CIFAR-10数据集,训练一个简单CNN网络。保存训练好的模型,测试。使用GPU训练。CIFAR数据集CIFAR数据集可分为CIFAR10, CIFAR100。 CIFAR-10是指包含10个种类, CIFAR-100包含100个种类。CIFAR-10特点:32x32 彩色图像;10个类别;总共60000张图像;50000张训练样本 + 10000张测试样本;每个类别有6000张图像, 10 x 6000 = 60000;原创 2021-09-12 09:46:11 · 2605 阅读 · 0 评论 -
Pytorch学习笔记(9)———基本的层layers
卷积神经网络常见的层类型名称作用Conv卷积层提取特征ReLU激活层激活Pool池化——BatchNorm批量归一化——Linear(Full Connect)全连接层——Dropout————ConvTranspose反卷积——pytorch中各种层的用法卷积 Convolution卷积类型作用torrch.nn.Conv1d一维卷积torch.nn.Conv2d二维卷积t原创 2021-09-11 23:50:27 · 887 阅读 · 0 评论 -
pytorch学习笔记(1)——Pytorch 在做什么
Pytorch 解决了什么问题机器学习走上风口,男女老少都跃跃欲试。然而调用 GPU 、求导、卷积还是有一定门槛的。为了降低门槛,Pytorch 帮我们搬走了三座大山(Tensorflow 等也一样):让运算能够在 GPU 上进行(速度可以接受了)让运算能够自动求导(代码更加简单了)让复杂运算能够直接调用(卷积不用自己写了)Pytorch 是怎样设计的在相互借(抄)鉴(袭)之后,大部分神经网络库都是这样搞的:封装一种新的数据结构(一般叫 Tensor )重写 Numpy 中的运算使其能转载 2021-09-11 15:45:39 · 568 阅读 · 0 评论