【pytorch】微调技术
前言
训练神经网络是一件非常耗费时间的事情,其需要大量的算力以及大量的数据。显然从头开始训练并不是明智之选,利用好已有的资源才是明智之选。
微调技术
图像识别笼统地可以分为两步:
- 提取图片的特征,此部分往往通过CNN卷积神经网络实现。
- 根据提取的特征,进行分类,此部分往往通过全连接神经网络来实现。
- 识别一只猫和识别一只狗有没有类似的地方呢?
答案是有的,它们在提取图片特征都是非常相似的。
考虑CNN中卷积的作用,它就是在识别不同的边缘,因此无论是猫,还是狗,图片特征都是类似的,但是如何根据这些特征来学习才是关键。
预训练模型
在图像识别中,有许多经典的神经网络,例如vgg,resnet等,对于这些经典的网络,pytorch都是提供了训练模型好的模型的。这些某些都是在ImageNet上训练好的,有较高的精确度。利用训练好的某些进行图片特征的提取,就能够大大减少训练的耗时。
代码实现
import torch
from torch import nn
from torch.nn import functional as F
from torchsummary import summarynet = torchvision.models.resnet18(pretrained=True)net.fc = nn.Linear(net.fc.in_features, 5)
nn.init.xavier_uniform_(net.fc.weight)
summary(net , input_size=(3,224,224) , device="cpu")lr = 0.0005
loss = nn.CrossEntropyLoss(reduction="mean")params_1x = [param for name, param in net.named_parameters()if name not in ["fc.weight", "fc.bias"]]
trainer = torch.optim.SGD([{'params': params_1x},{'params': net.fc.parameters(),'lr': lr * 80}],lr=lr, weight_decay=0.001)
epochs = 15
其实非常简单,甚至比自己完全手动定义神经网络都简单,因为它完全不需要自己定义网络结构。
但是这些与训练模型并不是能够直接拿过来就能使用的,还需要一些修改:
- 修改最后的类别数
在ImageNet中,其最后的全连接层是一个输出为100010001000的向量,也就是代表着100010001000个类别,在实际中,需要根据当前识别认为的类别数进行修改。 - 学习率
一般来说,预训练好的参数无需修改,可以将其设为无需学习的参量,也可以将其的学习率设置的非常小。而对于最后的全连接层,也就是对提取出来的图片信息进行分类的网络,其学习率就要比较大了。
作用与意义
微调技术可谓是没有足够算力人的福音了,其大大减少了训练的成本。
- 提取图像特征的CNN网络往往更加靠近输入,通过梯度反向传播进行训练,往往需要比靠近输出的全连接网络更耗费时间。
- 利用微雕技术,可以在极短的时间内得到一个非常好的结果,在5轮迭代之后就已经可以达到91%的正确率了;15轮迭代就能达到97%的正确率。
不足与局限性
并不是所有情况都能使用微调技术的,在图片特征出现显著差异的时候,使用微调技术往往不能得到满意的结果。
比如,在ImageNet上训练的模型都是基于正常图片的,但是如果将它用于识别医学影像(X光片等)就会导致失败。同样用这个模型去识别卡通图片也往往会识别。
【pytorch】微调技术相关推荐
- 超大规模智能模型相关工作总结:编程实现框架、算法模型、微调技术和应用...
©PaperWeekly 原创 · 作者 | 金金 单位 | 阿里巴巴研究实习生 研究方向 | 推荐系统 简介 近日,超大规模的智能模型越来越受到大家的关注,但是仅仅依赖于超大的计算资源并不足以完成这 ...
- 大规模语言模型微调技术——Instruction和Question的区别和联系
1. 引言 在ChatGPT的时代,每个人都能够轻松使用这一强大的语言模型.这一切的实现速度比我之前所想象的要快得多.这得益于大规模语言模型微调技术,其实并没有引入太多新颖的元素.特别是有了ChatG ...
- pytorch微调bert_北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT
本文由AI研习社用户张正投稿,来稿见文末联系方式 作者 | 张正 单位 | 清华大学 编辑 | Camel 现存的预训练模型中没有一种可以完美的适用于所有任务,这也给预训练模型的选择带来困难. 对于这 ...
- pytorch微调bert_小版BERT也能出奇迹:最火的预训练语言库探索小巧之路
选自Medium 作者:Victor Sanh 机器之心编译 参与:魔王 过去一段时间,大模型层出不穷.在大家纷纷感叹「大力出奇迹」的时候,作为调用预训练语言模型最流行的库,HuggingFace 尝 ...
- pytorch微调bert_香侬读 | RoBERT: 没错,我就是能更强——更大数据规模和仔细调参下的最优BERT
文章标题:RoBERTa: A Robustly Optimized BERT Pretraining Approach 文章作者:Yinhan Liu, Myle Ott, Naman Goyal, ...
- Facebook 又搞事,违反竞业协议被起诉,PyTorch 关键技术疑侵权
作者 | 神经星星 来源 | HyperAI超神经(ID:HyperAI) 头图 | 付费下载自视觉中国 近期,一纸诉讼书引起社区的广泛讨论.该诉讼由创业公司 Neural Magic 发起,指控 F ...
- 大模型微调技术(Adapter-Tuning、Prefix-Tuning、Prompt-Tuning(P-Tuning)、P-Tuning v2、LoRA)
2022年11月30日,ChatGPT发布至今,国内外不断涌现出了不少大模型,呈现"百模大战"的景象,比如ChatGLM-6B.LLAMA.Alpaca等模型及在此模型基础上进一步 ...
- 天桥调参师秘籍:一份深度学习超参微调技术指南
随着深度学习的兴起,越来越多的人从事算法工程师这一岗位.有时候他们自嘲自己为"天桥调参师".当然,算法工程师的工作内容并没有那么简单,因为设置超参数的过程需要专业知识和广泛的试验和 ...
- 【深度学习】PyTorch深度学习技术生态
PyTorch Author:louwill Machine Learning Lab 随着近几年的大力发展,PyTorch逐渐成为主流的深度学习框架.相应的PyTorch技术生态也逐渐丰富和完善.本 ...
- 最全ChatGPT技术汇总
作者:邱震宇(华泰证券股份有限公司 算法工程师) 来自:AINLP 链接:https://zhuanlan.zhihu.com/p/613698929 最近ChatGPT可以说是火遍了全世界,作为由知 ...
最新文章
- 城市大脑不仅是AI系统,更是结合人类智慧的混合智能巨系统
- java计算器程序加编辑帮助_这里有个JAVA计算器的小程序,希望帮忙加下注释,少许修改...
- 【干货】运维,你是青铜还是王者?
- GDCM:gdcm::Trace的测试程序
- 大数据hadoop资源网址
- java servlet接口开发_servlet三种实现方式之一实现servlet接口
- P2580-于是他错误的点名开始了【Trie,字符串】
- Tomcat 内存调大
- 山寨威武 仿冒Xoom先于行货获得Android 4.0升级
- apiclod 上传图片_Apicloud——关于上传图片、视频(二)
- 应用程序_构建应用程序12 条参考准则
- python正则表达式教程_Python中正则表达式的巧妙使用一文包你必掌握正则,
- Windows下React Native开发01 -- Android开发环境搭建
- Go语言基础之10--面向对象编程2之方法
- spring学习(五)—AOP相关术语
- 安装VSS 2005中遇到的一些问题和解决方法
- java bmp 变色_java怎么实现将 bmp图片黑底白字转换为白底黑字?将白色设置为透明色,谢谢...
- redis分布式锁和调度锁
- Yapi接口平台个人总结
- CSS-flex弹性布局补充