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 方法实现)
实战文本分类对抗攻击
实战文本分类对抗攻击
#算法实战
文章写得比较长,先列出大纲,以便读者直取重点。
“文本分类对抗攻击”是清华大学和阿里安全 2020 年 2 月举办的一场 AI
比赛,从开榜到比赛结束 20 天左右,内容是主办方在线提供 1000
条辱骂样本,参赛者用算法逐条扰动,使线上模型将其判别为非辱骂样本,尽量让扰动较小同时又保留辱骂性质(辱骂性质前期由模型判定,最终由人工判定)。
比赛规则
线上模型和评测使用的 1000
条样本不公开,选手根据赛方指定的接口实现算法,并用 docker
方式提交以供线上评测,每天最多评测 15 次,单次运行时间需控制在 30
分钟之内。
(第一个知识点:熟悉 Docker,简单环境调试)
其评价公式如下:
共 1000 条评测样本(samples=1000 且全部为辱骂文本),vi
为最终的人工评测结果,1 为辱骂,0
为非辱骂在(只对最终入围数据作人工评测,前期提交都认为 vi=1);ci
是分类结果,由多个线上模型作出评判并取均值,攻击成功为 1,攻击失败为
0;pi 是原始文本与扰动文本的差异,综合考虑了字符差异和语义差异,最终结果
Sfinal 满 ...
Fasttext快速文本分类
1 简介
Fasttext 源于 2016 年的论文《Bag of Tricks for Efficient Text
Classification》,论文地址:https://arxiv.org/pdf/1607.01759.pdf。论文非常短,加上
References 不过五页,Model architecture 只有一页。
深度学习神经网络在自然语言处理中表现非常优秀,但动辄几十层,上亿参数的大型网络速度慢且需要大量算力支持,限制了使用场景。FastText
是 Facebook 开源的一款简单而高效的文本分类器,它使用浅层的神经网络实现了
word2vec
以及文本分类功能,效果与深层网络差不多,节约资源,且有百倍的速度提升,可谓高效的工业级解决方案。本篇将介绍
Fasttext 的相关概念、原理及用法。
2 相关技术
2.1 BOW
BOW BOW 是词袋 Bag of Words 的简称,BOW
是文本分类中常用的文本向量化的方法,它忽略了顺序和语法,将文本看成词汇的集合,且词汇间相互独立,如同把词放进了一个袋子。在分类任务中使用
BOW
时,就是根据各个词义综合分析文 ...
轻量级BERT模型ALBERT
轻量级 BERT 模型 ALBERT
BERT 有很多改进版本,ALBERT 是一个轻量化版本。ALBERT 源自 2020
年的发表论文《ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF
LANGUAGE REPRESENTATIONS》,论文地址:https://arxiv.org/pdf/1909.11942.pdf。从题目可以看出,论文重点是轻量化
BERT 模型,以及优化了半监督学习,本文主要关注轻量化模型部分。
目前 NLP 的高级模型 BERT、GPT-2 都基于 Pretrain/fine-tune
模式,先使用无监督学习的海量文本预训练出一个带有“语言常识”的大模型,然后再根据具体任务调优,这就完美解决了具体任务训练集不足的问题。模型往往拥有千万或亿级的参数,目前的趋势是随着模型功能能越来越强大,模型的规模也越来越大,这使普通开发者越发无法企及。
随着 BERT
模型越来越频繁地被使用到真实场景中,模型的速度、规模、硬件逐渐成为瓶颈。预训练模型一般都规模庞大,在后期调优以及调用模型时也都需要花费大量的内存、算力和时 ...