搭建深度学习的docker环境
搭建深度学习的 docker 环境
介绍
深度学习一般依赖比较复杂的环境,每个项目需要的底层库各有不同,有时在
github
中下载的代码只能运行在版本较低的的工具链之上。想在一台机器上建立适合所有项目的环境非常困难,大多数情况下使用
docker 维护不同项目针对的不同环境。
CUDA 是 NVIDIA 推出的运算平台,一般通过它调用 GPU,CUDA 的主要版本有
7.x, 8.x,9.x,10.x,目前最常用的是 9 和
10,它们对接的上层软件版本也各不相同。如:
1234torch 1.1.0/1.1.0 + torchvision 0.2.* + CUDA 9torch 1.2.0/1.3.0 + torchvision 0.3.* + CUDA 10torch 1.2.0/1.3.0 + torchvision 0.4.* + CUDA 10torch 1.4.0 + torchvision 0.5.* + CUDA 10
除了 CUDA
基础库以外,还需安装相关工具包。可以在同一个操作系统中安装多个 CUDA
版本,使用时切换即可。
在 Docker 中使用 GPU 除 ...
TorchVision
TorchVision
#Pytorch #图形图像
说明
很多基于 Pytorch 的工具集都非常好用,比如处理自然语言的
torchtext,处理音频的 torchaudio,以及处理图像视频的 torchvision。
torchvision 包含一些常用的数据集、模型、转换函数等等。当前版本 0.5.0
包括图片分类、语义切分、目标识别、实例分割、关键点检测、视频分类等工具,如
mask-rcnn 功能也都包含在内了。mask-rcnn 的 pytorch 版本最高支持
torchvision 0.2.*,0.3.0 之后就将 mask-rcnn 包含到 tensorvision
之中了。
安装
torchvision 安装非常方便。$ pip install torchvision
但需要注意版本匹配:
1234torch 1.1.0/1.1.0 + vision 0.2.* + CUDA 9torch 1.2.0/1.3.0 + vision 0.3.* + CUDA 10torch 1.2.0/1.3.0 + vision 0.4.* + CUDA 10torch 1.4 ...
Pytorch提取不同层次图片的特征
Pytorch
提取不同层次图片的特征
#图形图像 #Pytorch
下例使用 torchvision 库提取了 resnet 最后一层的卷积特征;resnet 各
block 的卷积特性,以及金字塔特性。
具体取哪一层特征视使用场景而定,resnet 各 block
的输出包含更丰富的特征;从 resnet 最后一层提取的特征更为抽象;fpn
每层通道数相等,含义也类似,可以在多层之间比较。
123456789101112131415161718192021222324252627import osimport torchvision.models.detection.backbone_utils as backbone_utilsimport torchvisionimport torch.nn as nndevice = 'cuda'os.environ["TORCH_HOME"] = '/notebooks/data/mine/live/code_v7/model/'USE_FPN = Trueif USE_FPN: ...
Pytorch避免更新模型梯度
Pytorch 避免更新模型梯度
#Pytorch
1. torch.no_grad
(1) 用法
12with torch.no_grad(): 具体操作
(2) 说明
上例的“具体操作”中均不更新梯度,这样可以节约计算时间和内存。一般用于验证或者测试阶段。
2. param.requires_grad
(1) 用法
1p.requires_grad=False
(2) 说明
一般用于将某一层设置为不自动更新梯度,以避免训练模型时对该层调参。
3. model.eval
(1) 用法
12model.eval()具体操作
(2) 说明
模型支持 train 模式和 eval 模式,在使用模型之前调用
model.eval(),进入 eval 评估模型,它将改变 forward,如禁止
dropout,并用统计数据做 batch norm。因此,有时 train 模式和 eval
模式模型计算的结果不同。
怎么看目标检测的效果
怎么看目标检测的效果
怎么看目标检测的效果
Recall&Precision 引用一个知乎上的例子:某池塘有 1400
条鲤鱼,300 只虾,300 只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了 700
条鲤鱼,200 只虾,100 只鳖。那么,这些指标分别如下:正确率 Precision =
700 / (700 + 200 + 100) = 70% 召回率 Recall = 700 / 1400 = 50%
(出处:https://www.zhihu.com/question/19645541/answer/39732647)
IoU:预测区域和目标区域重合比例,即交集除并集
IoU=0.50: 重合比例大于 0.5 的算正例。
IoU=0.75: 重合比例大于 0.75 的算正例。
IoU=0.50:0.95: 从 0.50 到 0.95 每隔 0.5
计算一次,然后取均值。
area:区域大小
small:x<32x32
medium:32x32<x<96x96
large:x>96x96
maxDets:最多取几个目标区域
其 ...
调节学习率
调节学习率
在深度学习和其它一些循环迭代算法中,学习率都非常重要。在效率上,它几乎是与算力同等重要的因素;在效果上,它也决定着模型的准确率。如果设置太小,则收敛缓慢,也有可能收敛到局部最优解;设置太大又导致上下摆动,甚至无法收敛。
设定学习率
下面总结了设置学习率的一些方法:
理论上,如果将学习率调大 10 倍,现在 10 次训练就可以达成之前 100
次的训练效果。
一般使用工具默认的学习率,如果收敛太慢,比如训练了十几个小时,在训练集和验证集上仍在收敛,则可尝试将学习率加大几倍,不要一下调成太大。
如果误差波动过大,无法收敛,则可考虑减小学习率,以便微调模型。
在测试阶段建议使用较大的学习率,在短时间内测算过拟合位置,尤其好用。
在预训练模型的基础上 fine-tune
模型时,一般使用较小的学习率;反之,如果直接训练,则使用较大的学习率。
对于不同层可使用不同学习率,比如可对新添加的层使用较大的学习率,或者“冻住”某些层。
下图展示了不同学习率的误差变化曲线。
图片来自网络
手动调节学习率
Pytorch
提供在迭代过程中修改学习率的方法。最简单的方法是手动修改学习率的 ...
18_少儿Python编程_第十八讲:搭建网站
少儿 Python 编程 _
第十八讲:搭建网站
上一讲学习了编写网页代码的方法,到目前为止,创建的网页文件只能用浏览器打开。如果需要用同一网络中的其它电脑或者手机访问该页面,则需要搭建
HTTP 服务。
普通电脑上也可以搭建 HTTP 服务,成为小型的 HTTP 服务器,使用 Python
搭建 HTTP 服务非常简单,不需要额外安装软件,只要安装 Python 的三方模块
Flask 即可实现。
使用 Python 开发网站,只需要加入少量代码,就可以将 Python
的工作成果快速地展示给用户。
18.1 简单例程
Flask 是一个轻量级的 Web
应用框架,占用资源少,使用简单。本节将学习如何用 Flask
创建一个最简单的网站。
在 Anaconda 安装时已经安装了
Flask,因此可以直接使用,程序代码如下:
01 from flask import Flask
02
03 app = Flask(__name__)
04
05 @app.route('/test.html')
06 def hello_world():
07 retur ...
用深度学习模型提取特征
用深度学习模型提取特征
用途
有时候需要从图片(或文本)中提取出数值型特征,供各种模型使用。深度学习模型不仅可以用于分类回归,还能用于提取特征。通常使用训练好的模型,输入图片,输出为提取到的特征向量。
加入特征之后,结果往往不尽如人意,大致有以下原因:
深度学习模型一般有 N 层结构,不能确定求取哪一层输出更合适。
深度学习模型很抽象——几十层的卷积、池化、信息被分散在网络参数之中。提取自然语言的特征时,常常提取词向量层的输出作为特征,有时也取最后一层用于描述句意;图像处理时往往提取最后一层输出向量;在图像目标识别问题中,常提取后两层子网络的输出作为组合向量。如何选择提取位置,取决于对模型的理解,后文将对图像处理层进行详细说明。
针对不同问题训练出的模型,输出的特征也不同。 通常下载的
ResNet,VGG,BERT
预训练模型,虽然通用性高,但解决具体问题的能力比较弱。比如在自然语言处理中,用
GPT-2 或者 BERT
训练的模型只面对普通文章,如果从中提取特征用于判断辱骂,有些脏字可能有效,但是更多的“多义词”会被它的普通含义淹没。用自己的数据
fine-tune 后往往更有针 ...
Pytorch_基于预训练的ResNet模型训练自己的分类器
Pytorch_
基于预训练的 ResNet 模型训练自己的分类器
加载数据
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586import osimport torch.utils.data as dataimport torchimport torch.optim as optimimport torch.nn as nnfrom torch.optim import lr_schedulerfrom torchvision import datasets, models, transformsfrom PIL import Imageimport timeimport copyimport pandas as pdimport matplotlib.pyplot as pltimport numpy as ...
论文检索
论文检索
#工具 #论文阅读
科学文献数据库:http://arxiv.org
查找 arxiv 上论文的工具:http://www.arxiv-sanity.com/
, 可查找关键字相关的论文,并按时间远近排序,列表中也显示了
introduce。
[](https://img-blog.csdnimg.cn/20200323101240784.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpZXlhbjA4MTE=,size_16,color_FFFFFF,t_70)
show similar 可查找与之类似的论文(内部使用 tf/idf 方法实现)