深度学习
LoveMIss-Y
爱生活,爱学习,爱这个世界上一切让自己觉得快乐的东西,爱MIss-Y
展开
-
深度学习-各类数据集汇总
阅读目录Images Analysis Image Motion & Tracking Video Analysis & Scene Understanding 3D Computer Vision Analyzing Humans in Images Application Low- & Mid-Level Vision Text回到目录Image...转载 2020-03-10 15:20:44 · 7490 阅读 · 2 评论 -
pytorch教程之nn.Module类详解——使用Module类来自定义网络层
前言:前面介绍了如何自定义一个模型——通过继承nn.Module类来实现,在__init__构造函数中申明各个层的定义,在forward中实现层之间的连接关系,实际上就是前向传播的过程。事实上,在pytorch里面自定义层也是通过继承自nn.Module类来实现的,我前面说过,pytorch里面一般是没有层的概念,层也是当成一个模型来处理的,这里和keras是不一样的。前面...原创 2019-06-16 16:58:06 · 105438 阅读 · 40 评论 -
tensorflow的Data Pipeline系列教程(一)——Dataset类的属性即常用方法
前言:在tensorflow中,训练数据常常需要经过随机打乱、分成一个一个的batch来进行训练,当然有很多的方式可以完成,比如我们可以通过传统的python方法构建迭代器,我们也可以使用其它的一些方法,但是tensorflow本身提供了强大的data pipeline处理机制,本文就来详细说明一下。本文的核心是:从Dataset到Iterator的“四步走”过程。 ...原创 2019-06-13 17:24:14 · 5402 阅读 · 1 评论 -
keras自定义回调函数查看训练的loss和accuracy
前言:keras是一个十分便捷的开发框架,为了更好的追踪网络训练过程中的损失函数loss和准确率accuracy,我们有几种处理方式,第一种是直接通过 history=model.fit(),来返回一个history对象,通过这个对象可以访问到训练过程训练集的loss和accuracy以及验证集的loss和accuracy。第二种方式就是通过自定义一个回调函数Call backs,来实现这...原创 2019-06-23 09:48:13 · 24430 阅读 · 17 评论 -
keras技巧——如何获取某一个网络层的输出
前言:keras默认提供了如何获取某一个层的某一个节点的输出,但是没有提供如何获取某一个层的输出的接口,所以有时候我们需要获取某一个层的输出,则需要自己编写代码,但是鉴于keras高层封装的特性,编写起来实际上很简单,本文提供两种常见的方法来实现,基于上一篇文章的模型和代码:keras自定义回调函数查看训练的loss和accuracy一、模型加载以及各个层的信息查看从前面的定义...原创 2019-06-23 14:45:47 · 17560 阅读 · 9 评论 -
pytorch教程之损失函数详解——多种定义损失函数的方法
前言:前面的系列文章已经详细介绍了使用torch.nn.Module来实现自己定义的模型、自定义层,本文将继续来说明如何自定义损失函数,需要明确一个观点,不管是定义层还是损失函数,方法有很多,但是通过统一的接口nn.Module是最便于查看的,这也是pytorch的优点之一,模型、层、损失函数的定义具有统一性,都是通过Module类来完成,不像tensorflow那样不规范。具体可以参考前...原创 2019-07-09 13:43:46 · 36361 阅读 · 16 评论 -
pytorch的自定义拓展之(一)——torch.nn.Module和torch.autograd.Function
前言:pytorch的灵活性体现在它可以任意拓展我们所需要的内容,前面讲过的自定义模型、自定义层、自定义激活函数、自定义损失函数都属于pytorch的拓展,这里有三个重要的概念需要事先明确。要实现自定义拓展,有两种方式,(1)方式一:通过继承torch.nn.Module类来实现拓展。这也是我们前面的例子中所用到的,它最大的特点是以下几点:包装torch普通函数和torch.nn...原创 2019-07-09 18:20:05 · 14764 阅读 · 9 评论 -
pytorch的自定义拓展之(二)——torch.autograd.Function完成自定义层
前言:前面的一篇文章中,已经很详细的说清楚了nn.Module、nn.functional、autograd.Function三者之间的联系和区别,虽然autograd.Function本质上是自定义函数的,但是由于神经网络、层、激活函数、损失函数本质上都是函数或者是多个函数的组合,所以使用autograd.Function依然可以达到定义层、激活函数、损失函数、甚至模型的目的,就像我们使...原创 2019-07-10 14:54:54 · 9350 阅读 · 2 评论 -
pytorch教程之nn.Module类详解——state_dict和parameters两个方法的差异性比较
前言:pytorch的模块Module类有很多的方法,前面的文章中已经介绍了四个常用的方法,这四个方法可以用于获取模块中所定义的对象(即每一个层)他们分别是children()、named_children()、modules()、named_modules()方法,本文介绍另外两个重要的方法,这两个方法会获取到模型中训练的参数(权值矩阵、偏置bias),这两个方法是model.state...原创 2019-07-14 17:05:47 · 17695 阅读 · 4 评论 -
pytorch搭建模型的的五大层次级别(由浅入深)
前言:神经网络的搭建本身是一个较为复杂的过程,但是现在有非常多的、非常人性化的开源框架提供给我们使用,但是即便如此,网络的搭建也是有多种方法可以选择,本文以pytorch为例子加以说明。神经网络的基本流程可以分为两大步骤,即网络结构搭建+参数的梯度更新(后者又包括 “前向传播+计算参数的梯度+梯度更新”)这其实也是后面pytorch搭建神经网络的一个基本思路1 、原始搭建...原创 2019-05-17 17:48:23 · 8034 阅读 · 12 评论 -
keras的图像预处理全攻略(四)—— ImageDataGenerator 类实践案例
前言:前面已经详细介绍了keras整个图像预处理模块的详细流程,参见下面两篇文章:keras的图像预处理全攻略(二)—— ImageDataGenerator 类keras的图像预处理全攻略(三)—— ImageDataGenerator 类的辅助类本文结合实际案例来说说明到底该怎么应用ImageDataGenerator 类以及需要注意的一些事项一、图像分类问题中Im...原创 2019-05-13 18:00:48 · 20823 阅读 · 9 评论 -
keras的图像预处理全攻略(三)—— ImageDataGenerator 类的辅助类
上一篇文章介绍了keras图像预处理的核心类—— ImageDataGenerator 类,其实关于keras的图像预处理与图像generator都是通过这个类来实现的,第一篇文章介绍的相关方法都是为这个类服务的辅助方法,本文要介绍的几个类都是为ImageDataGenerator 类服务的辅助类,所以在实际应用中,一般不需要用到辅助方法与辅助类,只需要使用ImageDataGene...原创 2019-05-13 10:20:24 · 4997 阅读 · 4 评论 -
keras的图像预处理全攻略(五)—— ImageDataGenerator 类结合神经网络的实践
前言:前面的系列文章已经系统的说明了keras的图像预处理操作,有原理部分、也有少量实践部分,可以参考下面的文章:keras的图像预处理全攻略(四)—— ImageDataGenerator 类实践案例keras的图像预处理全攻略(三)—— ImageDataGenerator 类的辅助类keras的图像预处理全攻略(二)—— ImageDataGenerator 类ker...原创 2019-05-14 16:42:24 · 4693 阅读 · 6 评论 -
keras的图像预处理全攻略(一)——基本的图像变换(Image Transform)方法
keras中主要提供了主要的四个模块:(1)......\Lib\site-packages\keras\preprocessing\image.py (这个不完全,完全的详细的参考下面的序号2)(2)......\Lib\site-packages\keras_preprocessing\image.py(3)......\Lib\site-packages\keras...原创 2019-05-10 11:43:35 · 16570 阅读 · 5 评论 -
Tensorboard深入详解(一)——使用keras结合Tensorboard可视化神经网络详细教程
前言:tensorboard是一个非常强大的工具、不仅仅可以帮助我们可视化神经网络训练过程中的各种参数,而且可以帮助我们更好的调整网络模型、网络参数,这一块类容后面会讲到,不管是tensorflow、keras、还是pytorch,tensorboard都提供了非常好的支持,本文是系列文章的第一篇,详细介绍基于keras+tensorboard如何来进行网络的可视化。写这篇文章的初衷很简单...原创 2019-05-15 14:33:15 · 27415 阅读 · 24 评论 -
keras的图像预处理全攻略(二)—— ImageDataGenerator 类
上一篇文章已经详细介绍了keras进行图像预处理的一些常规操作,但是有一个问题就是上面的那些方法都是针对一张图片进行操作的,我们在深度学习的时候,当然也可以事先先一张一张将图片进行预处理,然后再将图片放入训练,但是这样做效率比较低下,而且不是实时的,即图像的预处理变成了完全的事先操作,和后面的训练毫无关系。那有没有效率更加高校一些,在训练的时候边训练边处理的实时操作方法呢?keras提供了...原创 2019-05-10 15:46:51 · 48673 阅读 · 5 评论 -
Tensorboard深入详解(二)——在keras中自己实现Tensorboard可视化神经网络
前言:上一篇文章中《Tensorboard深入详解(一)——使用keras结合Tensorboard可视化神经网络详细教程》,我们可以看出使用keras预定义的回调函数可以非常方便的实现Tensorboard可视化,简单高效、使用快捷。但是也有不好的地方,比如我不想查看所有的权重,我只对某一个有兴趣,那我就不得不保存所有的信息到日志文件里面,这导致比较浪费,要是有办法可以定制就好了,本文不...原创 2019-05-16 09:18:42 · 2721 阅读 · 0 评论 -
keras实现自定义层的关键步骤解析
前言:Keras提供众多常见的已编写好的层对象,例如常见的卷积层、池化层等,我们可以直接通过以下代码调用。Keras中的层大致上分为两种类型:第一种是带有训练参数的:比如Dense层、Conv2D层,等等,我们在训练的过程中需要训练层的权重和偏置项;第二种是不带训练参数的:比如dropout层、flatten层、等等,我们不需要训练它的权重,只需要对输入进行加工处理再输出就行了。...原创 2019-05-24 16:41:01 · 18259 阅读 · 6 评论 -
pytorch教程之nn.Module类详解——使用Module类来自定义模型
前言:pytorch中对于一般的序列模型,直接使用torch.nn.Sequential类及可以实现,这点类似于keras,但是更多的时候面对复杂的模型,比如:多输入多输出、多分支模型、跨层连接模型、带有自定义层的模型等,就需要自己来定义一个模型了。本文将详细说明如何让使用Mudule类来自定义一个模型。一、torch.nn.Module类概述个人理解,pytorch不...原创 2019-05-30 20:35:40 · 144021 阅读 · 32 评论 -
pytorch教程之nn.Sequential类详解——使用Sequential类来自定义顺序连接模型
前言:类似于keras中的序贯模型,当一个模型较简单的时候,我们可以使用torch.nn.Sequential类来实现简单的顺序连接模型。这个模型也是继承自Module类的,关于这个类,后面的文章会详细介绍。一、关于Sequential类的简介先来看一下它的定义吧,在之前,我们首先需要明确一个特别重要的观念,那就是——torch的核心是Module类,Module类在下面这个模...原创 2019-05-26 09:40:27 · 128614 阅读 · 23 评论 -
【个人整理】实例分割模型Mask-RCNN网络原理与架构详解
前言:Mask R-CNN是一个非常灵活的框架,它来源于faster-RCNN和全卷积网络FCN,但是又提出了很多的改进措施,Mask-RCNN非常灵活,我们可以可以增加不同的分支完成不同的任务,可以完成目标分类、目标检测、语义分割、实例分割、人体姿势识别等多种任务,与其说Mask-RCNN是一个实例分割算法,倒不如说Mask-RCNN是一个灵活的框架。一、Mask-RCNN概览...原创 2019-04-30 14:02:54 · 23627 阅读 · 7 评论 -
tensorflow Debugger教程(一)——使用自带的tfdbg进行调试
前言:在tensorflow2.0之前,由于tensorflow采用的都是静态图机制,所以在调试起来的时候不像我们平时编写python程序那样便于查看,我们没有办法直接使用编辑器的调试功能,也没有办法使用python自带的pdb调试器,tensorflow自己提供了一套专门用于调试的工具。一、TensorFlow 调试器简介tfdbg是 TensorFlow 的专用调试程序。借助...原创 2019-07-05 17:55:41 · 8384 阅读 · 1 评论 -
tensorflow Debugger教程(二)——tf.Print()与tf.print()函数
前言:tensorflow之前的版本由于是采用静态图,所以在调试的时候比较麻烦,前面一篇文章介绍了tensorflow自带的调试器,类似于python的pdb调试,本文专门讲两个函数,用来打印tensorflow中的变量,前一篇文章参考:tensorflow Debugger教程(一)——使用自带的tfdbg进行调试一、tensorflow查看tensor的传统做法比如下面的例子:...原创 2019-07-16 10:39:57 · 20603 阅读 · 0 评论 -
linux下安装python3完整教程(依赖环境gcc,make,cmake,configure等详细解释)
前言:python在linux环境下面没有安装包,只支持从源码安装,本文不仅仅会完整的演示安装步骤,还会解释每一步这么做的原因以及一些关键概念的理解,包括什么是make等。本文基于centos7的KDE桌面版,安装python3.6.9版本。一、安装依赖环境1.1 安装依赖环境sudo yum install -y gcc make cmake zlib-devel bzi...原创 2019-08-31 10:32:30 · 19785 阅读 · 6 评论 -
pytorch中实现循环神经网络的基本单元RNN、LSTM、GRU的输入、输出、参数详细理解
前言:这篇文章是对已经较为深入理解了RNN、LSTM、GRU的数学原理以及运算过程的人而言的,如果不理解它的基本思想和过程,可能理解起来不是很简单。一、先从一个实例看起这是官网上面的一个例子,本次以LSTM作为例子而言,实际上,GRU、LSTM、RNN的运算过程是很类似的。import torchimport torch.nn as nnlstm = nn.LSTM(10,...原创 2019-08-31 12:02:54 · 10899 阅读 · 4 评论 -
linux在非root用户之下安装多个版本的CUDA和cudnn,并且自由切换
前言:前面讲解过Windows下面如何安装多个不同版本的CUDA,参考:windows下同一个显卡配置多个CUDA工具包以及它们之间的切换普通用户不使用sudo安装多个版本CUDA和cuDNN确定安装的软件版本下载CUDA Toolkit下载cuDNN安装CUDA配置cuDNN配置用户环境变量安装多个版本的CUDA,然后在不同的CUDA版本之下进行切换。一、确定安装的软件版...原创 2019-09-08 17:36:05 · 8473 阅读 · 1 评论 -
pytorch中保存的模型文件.pth深入解析
前言:前面有专门的讲解关于如何深入查询模型的参数信息,可以参考这篇文章:pytorch教程之nn.Module类详解——state_dict和parameters两个方法的差异性比较本次来解析一下我们通常保存的模型文件 .pth 文件到底内部是什么?一、.pth 文件详解在pytorch进行模型保存的时候,一般有两种保存方式,一种是保存整个模型,另一种是只保存模型的参数。...原创 2019-09-12 16:50:40 · 64234 阅读 · 14 评论 -
pytorch中关于分类问题损失函数的易混淆点——交叉熵损失的基本原理以及几种不同的实现
前言:pytorch中有几个非常容易搞混淆的函数,它们是softmax和log_softmax,CrossEntropyLoss()和NLLLoss(),为了更加彻底的弄清楚,本文将分为两篇文章来说明,第一篇说明原理,第二篇说明用法。一、二分类损失函数1.1 从一个简单的实例说起对于一个二分类问题,比如我们有一个样本,有两个不同的模型对他进行分类,那么它们的输出都应该是一个二维向量...原创 2019-10-09 19:47:14 · 3189 阅读 · 1 评论 -
(第四篇)pytorch数据预处理三剑客之——Dataset,DataLoader,Transform,Sampler采样器补充
前言:前面有系列文章讲解了Dataset,DataLoader,Transform三者之间的关系,里面在讲到Sampler的时候提到那是一个“采样器”,没有深入介绍,本文续接前面的文章,参考:(第一篇)pytorch数据预处理三剑客之——Dataset,DataLoader,Transform(第二篇)pytorch数据预处理三剑客之——Dataset,DataLoader,Trans...转载 2019-08-30 21:09:22 · 2684 阅读 · 0 评论 -
keras通过模型子类(SubClassing)化实现自定义模型
前言:前面有文章专门讲过使用keras如何实现自定义层,本文将继续介绍使用keras如何实现一个自定义模型,其实实现自定义层和自定义的方式与pytorch极度类似,注意体会他们的联系和区别,前面的文章参见:keras实现自定义层的关键步骤解析另外,本文基于tensorflow2.0的高层API——tf.keras,使用的案例是手写字识别一、函数式 API(Functional AP...原创 2019-08-14 11:46:53 · 6592 阅读 · 0 评论 -
(第一篇)pytorch数据预处理三剑客之——Dataset,DataLoader,Transform
前言:在深度学习中,数据的预处理是第一步,pytorch提供了非常规范的处理接口,本文将针对处理过程中的一些问题来进行说明,本文所针对的主要数据是图像数据集。本文的案例来源于车道线语义分割,采用的数据集是tusimple数据集,当然先需要将tusimple数据集写一个简单的脚本程序转换成指定的数据格式,如下:一、基本概述pytorch输入数据PipeLine一般遵循一个“三...原创 2019-07-24 14:31:27 · 11646 阅读 · 2 评论 -
(第二篇)pytorch数据预处理三剑客之——Dataset,DataLoader,Transform
前言:前面的系列文章之第一篇已经基本上说明了DataSet类和DataLoader类的用法,但是鉴于DataLoader类中有一个参数collate_fn使用起来比较复杂,所以本次的第二篇文章还专门说一下这个函数的功能。第一篇文章请参考:(第一篇)pytorch数据预处理三剑客之——Dataset,DataLoader,Transformcollate_fn,中单词collate的...原创 2019-07-24 15:25:35 · 4014 阅读 · 4 评论 -
(第三篇)pytorch数据预处理三剑客之——Dataset,DataLoader,Transform
前言:系列文章的前面两篇文章已经很明确的说明了如何使用DataSet类和DataLoader类,而且第二篇文章中详细介绍了DataLoader类中的几个重要的常用的参数,如sampler参数、collate_fn参数,但是在数据与处理的过程中,还会遇到数据增强、数据裁剪等各种操作,当然这些操作我们可以预先自己来实现,但是pytorch提供了强大的处理工具来对图像进行预处理,这也是本文的重点...原创 2019-07-25 10:33:11 · 16273 阅读 · 5 评论 -
pytorch中的.detach和.data深入详解
前言:这两个方法都可以用来从原有的计算图中分离出某一个tensor,有相似的地方,也有不同的地方,下面来比较性的看一看。PyTorch0.4以及之后的版本中,.data 仍保留,但建议使用 .detach()一、tensor.data的使用先直接看一段代码:import torcha = torch.tensor([1,2,3.], requires_grad = T...原创 2019-07-22 11:17:50 · 21889 阅读 · 7 评论 -
pytorch 网络结构可视化方法汇总(三种实现方法详解)
前言:在深度学习的时候,能够很好的绘制出整个网络的模型图,这是非常方便的,当前流行的tensorflow和pytorch都有很多种方法可以绘制模型结构图,特在此总结如下:tensorflow的模型结构可视化方法:(1)使用自带的tensorboard(不直观)(2)使用netron工具打开(.pd 或者是.meta文件)(3)第三方库CNNGraph(https://g...原创 2019-07-23 18:03:09 · 68747 阅读 · 22 评论 -
收集到的 PyTorch trick 集锦
目录:指定GPU编号 查看模型每层输出详情 梯度裁剪 扩展单张图片维度 独热编码 防止验证模型时爆显存 学习率衰减 冻结某些层的参数1、指定GPU编号设置当前使用的GPU设备仅为0号设备,设备名称为/gpu:0:os.environ["CUDA_VISIBLE_DEVICES"] = "0" 设置当前使用的GPU设备为0,1号两个设备,名称依次为/...转载 2019-08-13 17:57:00 · 767 阅读 · 1 评论 -
深度学习中GPU和显存分析
一 神经网络显存占用分析神经网络模型占用的显存包括:模型自身的参数 模型的输出1.1 参数的显存占用只有有参数的层,才会有显存占用。这部份的显存占用和输入无关,模型加载完成之后就会占用。(1)有参数的层主要包括:卷积 全连接 BatchNorm BN层也是有参数的哦, Embedding层 ... ...(2)无参数的层:多数的激活层(Sigmoid...原创 2019-08-13 19:11:18 · 1800 阅读 · 0 评论 -
[实用工具] 如何免费下载 IEEE、ECCV、ICCV、CVPR、ACL等文章!
前言:本文分享几个很牛逼的论文免费下载网站:(1)papers with code (2)sci-hub: http://sci-hub.tw 或者是http://sci-hub.se (3)Library Genesis(俄罗斯人弄的) (4)BOOKSC: https://booksc.xyz (5)除上面的之外,还可以在google学术、arxiv官网、crossref(h...原创 2019-08-19 11:24:33 · 4987 阅读 · 1 评论 -
pytorch的两个函数 .detach() .detach_() 的作用和区别
前言:当我们再训练网络的时候可能希望保持一部分的网络参数不变,只对其中一部分的参数进行调整;或者值训练部分分支网络,并不让其梯度对主网络的梯度造成影响,这时候我们就需要使用detach()函数来切断一些分支的反向传播一、tensor.detach()返回一个新的tensor,从当前计算图中分离下来的,但是仍指向原变量的存放位置,不同之处只是requires_grad为false,得...原创 2019-07-11 17:53:09 · 170848 阅读 · 22 评论 -
【个人整理】google语义分割网络Deep Lab v1设计思想以及架构
前言:前面介绍的FCN、SegNet、U-Net在语义分割的效果上还没有完全达到预想的那种程度,他们的核心设计理念其实都是一样的,都可以说是一个Ecoder-Decoder的架构,并且使用全卷积网络,这样做有着一些比较大的缺点依然没有解决,google在此基础之上提出了Deep Lab系列网络,现在已经有了 v1 、v2 、v3 、v3+这几个版本,本文来看一看v1版本。一、视觉任务...原创 2019-04-24 16:26:52 · 1407 阅读 · 1 评论