【Python】学习笔记

【Python】学习笔记

  • 【Python】
    • 1. in和not in操作
    • 2.glob
    • 3.Pandas.apply()
    • 4.df.dropna()
    • 5.fine-tune
      • 迁移学习——Fine-tune
      • 蒸馏
    • 参考文献

【Python】

1. in和not in操作

利用in和not in操作符,可以确定一个值是否在列表中。像其他操作符一样,in和not in用在表达式中,连接两个值:一个要在列表中查找的值,以及待查找的列表。这些表达式将求值为布尔值。

成员操作符 in

str = "string test string test"
find1 = "str"
find2 = "test"
print(find1 in str)      # True
print(find1 not in str)  # False

in不只是在字符串中可以使用哦!

使用字符串对象的 find() 、 rfind() 、 index() 、 rindex()

str = "string test string test"
find1 = "str"
find2 = "test"
# find
print(str.find(find1))  # 0
print(str.find(find2))  # 7# rfind
print(str.rfind(find1))  # 12
print(str.rfind(find2))  # 19# index
print(str.index(find1))  # 0
print(str.index(find2))  # 7# rindex
print(str.rindex(find1))  # 12
print(str.rindex(find2))  # 19# count
print(str.count(find1))  # 2
print(str.count(find2))  # 2

find()和index()的区别

方法区别
find()获取值时,如果要查找的值不存在,会返回-1
index()获取值的索引时,如果不存在值,会报值

方法 区别
find() 从字符串左边开始查询子字符串匹配到的第一个索引(从0开始)
rfind() 从字符串右边开始查询字符串匹配到的第一个索引(从0开始)
index()和rindex()的区别

方法 区别
index() 从字符串左边开始查询子字符串匹配到的第一个索引(从0开始)
rindex() 从字符串右边开始查询字符串匹配到的第一个索引(从0开始)

2.glob

glob.glob():返回所有匹配的文件路径列表、glob.iglob():获取一个可遍历生成器,使用它可以迭代获取匹配的文件路径名
glob模块是最简单的模块之一,内容非常少。用它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。

查找文件只用到三个匹配符:

“*”:匹配0个或多个字符;
“?”:匹配单个字符;
“[]”:匹配指定范围内的字符,如:[0-9]匹配数字;

  • glob.glob

返回所有匹配的文件路径列表。它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径。下面是使用glob.glob的例子:

import glob#获取指定目录下的所有图片
print (glob.glob(r"/home/qiaoyunhao/*/*.png"),"\n")#加上r让字符串不转义#获取上级目录的所有.py文件
print (glob.glob(r'../*.py')) #相对路径
import os
import globcp_files = sorted(glob.glob(os.path.join(args.model_path, 'model_step_*.pt')))
print(cp_files)

————————————————

- glob.iglob

获取一个可迭代的生成器,使用它可以逐个获取匹配的文件路径名。

与glob.glob()的区别是:glob.glob同时获取所有的匹配路径,而glob.iglob一次只获取一个匹配路径。这有点类似于.NET中操作数据库用到的DataSet与DataReader。下面是一个简单的例子:

import glob
#父目录中的.py文件
f = glob.iglob(r'../*.py')
print (f) #<generator object iglob at 0x00B9FF80>
for py in f:print (py)

————————————————
版权声明:本文为CSDN博主「u013250861」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013250861/article/details/120576548

3.Pandas.apply()

apply() 函数的自由度较高,可以直接对 Series 或者 DataFrame 中元素进行逐元素遍历操作,方便且高效,具有类似于 Numpy 的特性。

apply() 使用时,通常放入一个 lambda 函数表达式、或一个函数作为操作运算,官方上给出的 apply() 用法:

DataFrame.apply(self, func, axis=0, raw=False, result_type=None, args=(), **kwds

func 代表的是传入的函数或 lambda 表达式;
axis 参数可提供的有两个,该参数默认为0/列
0 或者 index ,表示函数处理的是每一列;
1 或 columns ,表示处理的是每一行;

raw ;bool 类型,默认为 False;
False ,表示把每一行或列作为 Series 传入函数中;
True,表示接受的是 ndarray 数据类型;

apply() 最后的是经过函数处理,数据以 Series 或 DataFrame 格式返回。

Series 使用apply()
Series 使用 apply() 函数与 DataFrame 相似,用法上最大区别就是加了一个列名 DataFram.类名

1,列 A 中所有元素加 1

不用 apply() 的方法

df.A =df.A +1
利用 apply() 函数进行操作,这里我传入一个 lambda 函数:

df.A = df.A.apply(lambda x:x+1)
df
A B C
0 5 9 13
1 5 9 13
2 5 9 13
2,判断列 A 中元素是否能够被2整除,用 Yes 或 No在旁边标注

df.A = df.A.apply(lambda x:str(x)+“\tYes” if x%2==0 else str(x)+“\tNo”)
df
A B
0 5\tNo 9
1 5\tNo 9
2 5\tNo 9

4.df.dropna()

df.dropna()函数用于删除dataframe数据中的缺失数据,即 删除NaN数据.

Parameters说明
axis0为行 1为列,default 0,数据删除维度
how{‘any’, ‘all’}, default ‘any’,any:删除带有nan的行;all:删除全为nan的行
threshint,保留至少 int 个非nan行
subsetlist,在特定列缺失值处理
inplacebool,是否修改源文件

5.fine-tune

就是用别人训练好的模型,加上我们自己的数据,来训练新的模型。finetune相当于使用别人的模型的前几层,来提取浅层特征,然后在最后再落入我们自己的分类中。
  finetune的好处在于不用完全重新训练模型,从而提高效率,因为一般新训练模型准确率都会从很低的值开始慢慢上升,但是fine tune能够让我们在比较少的迭代次数之后得到一个比较好的效果。
  在数据量不是很大的情况下,finetune会是一个比较好的选择。但是如果你希望定义自己的网络结构的话,就需要从头开始了。

迁移学习——Fine-tune

迁移学习背景:
在传统的机器学习的框架下,学习的任务就是在给定充分训练数据的基础上来学习一个分类模型;然后利用这个学习到的模型来对测试文档进行分类与预测。然而,我们看到机器学习算法在当前的Web挖掘研究中存在着一个关键的问题:一些新出现的领域中的大量训练数据非常难得到。我们看到Web应用领域的发展非常快速。大量新的领域不断涌现,从传统的新闻,到网页,到图片,再到博客、播客等等。传统的机器学习需要对每个领域都标定大量训练数据,这将会耗费大量的人力与物力。而没有大量的标注数据,会使得很多与学习相关研究与应用无法开展。其次,传统的机器学习假设训练数据与测试数据服从相同的数据分布。然而,在许多情况下,这种同分布假设并不满足。通常可能发生的情况如训练数据过期。这往往需要我们去重新标注大量的训练数据以满足我们训练的需要,但标注新数据是非常昂贵的,需要大量的人力与物力。从另外一个角度上看,如果我们有了大量的、在不同分布下的训练数据,完全丢弃这些数据也是非常浪费的。如何合理的利用这些数据就是迁移学习主要解决的问题。迁移学习可以从现有的数据中迁移知识,用来帮助将来的学习。迁移学习(Transfer Learning)的目标是将从一个环境中学到的知识用来帮助新环境中的学习任务。因此,迁移学习不会像传统机器学习那样作同分布假设。

什么是迁移学习?
迁移学习(Transfer learning) 顾名思义就是把已训练好的模型参数迁移到新的模型来帮助新模型训练。考虑到大部分数据或任务都是存在相关性的,所以通过迁移学习我们可以将已经学到的模型参数(也可理解为模型学到的知识)通过某种方式来分享给新模型从而加快并优化模型的学习效率不用像大多数网络那样从零学习。

模型的训练与预测:
深度学习的模型可以划分为 训练 和 预测 两个阶段。
训练 分为两种策略:一种是白手起家从头搭建模型进行训练,一种是通过预训练模型进行训练。
预测 相对简单,直接用已经训练好的模型对数据集进行预测即可。
在这里插入图片描述
1.为什么要迁移学习?
1)站在巨人的肩膀上:前人花很大精力训练出来的模型在大概率上会比你自己从零开始搭的模型要强悍,没有必要重复造轮子。
2)训练成本可以很低:如果采用导出特征向量的方法进行迁移学习,后期的训练成本非常低,用CPU都完全无压力,没有深度学习机器也可以做。
3)适用于小数据集:对于数据集本身很小(几千张图片)的情况,从头开始训练具有几千万参数的大型神经网络是不现实的,因为越大的模型对数据量的要求越大,过拟合无法避免。这时候如果还想用上大型神经网络的超强特征提取能力,只能靠迁移学习。
2.迁移学习有几种方式
在这里插入图片描述
1)Transfer Learning:冻结预训练模型的全部卷积层,只训练自己定制的全连接层。
2)Extract Feature Vector:先计算出预训练模型的卷积层对所有训练和测试数据的特征向量,然后抛开预训练模型,只训练自己定制的简配版全连接网络。
3)Fine-tune:冻结预训练模型的部分卷积层(通常是靠近输入的多数卷积层),训练剩下的卷积层(通常是靠近输出的部分卷积层)和全连接层。
注:Transfer Learning关心的问题是:什么是“知识”以及如何更好地运用之前得到的“知识”,这可以有很多方法和手段,eg:SVM,贝叶斯,CNN等。而fine-tune只是其中的一种手段,更常用于形容迁移学习的后期微调中。
3.三种迁移学习方式的对比
1)第一种和第二种训练得到的模型本质上并没有什么区别,但是第二种的计算复杂度要远远优于第一种。
2)第三种是对前两种方法的补充,以进一步提升模型性能。要注意的是,这种方法并不一定能真的对模型有所提升。
本质上来讲:这三种迁移学习的方式都是为了让预训练模型能够胜任新数据集的识别工作,能够让预训练模型原本的特征提取能力得到充分的释放和利用。但是,在此基础上如果想让模型能够达到更低的Loss,那么光靠迁移学习是不够的,靠的更多的还是模型的结构以及新数据集的丰富程度。

实验:尝试对模型进行微调,以进一步提升模型性能
1.Fine-tune所扮演的角色
拿到新数据集,想要用预训练模型处理的时候,通常都会先用上面方法一或者方法二来看看预训练模型在新数据上的表现怎么样,摸个底。如果表现不错,还想看看能不能进一步提升,就可以试试Fine-tune,进一步解锁卷积层以继续训练模型。
但是不要期待会有什么质的飞跃。
另外,如果由于新数据集与原数据集(例如ImageNet数据集)的差别太大导致表现很糟,那么一方面可以考虑自己从头训练模型,另一方面也可以考虑解锁比较多层的训练,亦或干脆只用预训练模型的参数作为初始值,对模型进行完整训练。

2.Fine-tune 也可以有三种操作方式
注:其实基本思路都是一样的,就是解锁少数卷积层继续对模型进行训练。
场景1:已经采用方法一的方式,带着冻僵的卷积层训练好分类器了。
如何做:接着用方法一里的模型,再解锁一小部分卷积层接着训练就好了。
场景2:已经采用方法二里的方式,把分类器训练好了,现在想要进一步提升模型。
如何做:重新搭一个预训练模型接新分类器,然后把方法二里训练好的分类器参数载入到新分类器里,解锁一小部分卷积层接着训练。
场景3:刚上手,想要 Transfer Learning + Fine-tune一气呵成。
如何做:和方法一里的操作一样,唯一不同的就是只冻僵一部分卷积层训练。需要注意的是,这么做需要搭配很低的学习率,因此收敛可能会很慢。
摘录:https://zhuanlan.zhihu.com/p/30121601

迁移学习: 把预训练模型参数迁移到新的模型上,帮助模型训练。
应用场景
数据集中只有少量的label data,直接训练效果很差,容易过拟合。

蒸馏

分支
模型蒸馏/压缩 Distillation
就是用户停留时长、(广告)曝光比列之类的 后验特征统计的特征,这种信号强, 只能离线获取的特征【线上无法获得】加入 模型中 去蒸馏

离线环境下,会同时训练两个模型:一个学生模型和一个教师模型。其中教师模型额外利用了优势特征,则准确率更高。将教师模型蒸馏出来的知识传递给学生模型,辅助其训练,提升学生的准确率。
线上服务时,只用学生模型进行部署,由于输入中不依赖优势特征,则保证了线上线下特征的一致性。
在这里插入图片描述
作用
压缩模型体积

手段
fine tune/ fine tuning:微调,一种调参手段
y=wx,若w实际为5。
如果w初始化为0,需不断反向传播更新后得到5。
但直接初始化为4.7【相当于给一个pre-trained model】,之后fine tune【后面更新w的过程】,能很快得到5

优点
不做微调:从头训练,需大量数据,需时间和计算资源;模型不收敛,准确率低,模型容易过拟合,泛化能力低。
使用微调:无次问题。

使用场景
数据集和预训练模型的数据集相似, 数据集中只有少量的label data,模型正确率低

具体操作
学习率设置
使用较小的学习率来训练,因为预训练的权重相对随机初始化的权重已经很好了,过快扭曲它们。通常学习率比从头开始训练的初始学习率小10倍。

使用哪些层权重
如果数据量过少,只训练预训练网络的最后一层softmax层;截断预训练网络的最后一层(softmax层),用训练集中相关的softmax替换它。如:ImageNet上预训练的网络有1000个类别的softmax图层,训练集中只有10个类别的分类,则网络的新的softmax层由10个类别组成。
如果数据量中等,可冻结预训练网络的前k层权重,再次训练剩余的(n-k)层。因为前几层捕捉的是通用特征,如边、曲线,希望保持不变。

multi-task learning
fine tune是先学习预训练数据集,再学习数据集。
mult-task learning是同时学习。

参考文献

1.https://blog.csdn.net/qdPython/article/details/117419793?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167888171316800184141246%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=167888171316800184141246&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-117419793-null-null.142v73wechat,201v4add_ask,239v2insert_chatgpt&utm_term=python%E4%B8%AD%E5%88%A4%E6%96%AD%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%85%E5%90%AB%E6%9F%90%E4%B8%AA%E5%AD%97%E7%AC%A6&spm=1018.2226.3001.4187

2 http://t.csdn.cn/EqAdy

3.原文链接:https://blog.csdn.net/puspos/article/details/120023434## 迁移学习 fine tune(微调) 模型蒸馏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/42846.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聚观早报|OpenAI发文介绍保障AI安全的方法;王慧文AI公司正式开张

今日要闻&#xff1a;OpenAI发文介绍保障AI安全的方法&#xff1b;印度或首次参与iPhone15首批供货&#xff1b;胡润全球白手起家U40富豪榜发布&#xff1b;王慧文 AI 公司正式开张&#xff1b;吴以岭卸任以岭药业董事长 OpenAI发文介绍保障AI安全的方法 美国当地时间 4 月 5 …

手写操作系统+shell+文件系统,绝了

去年秋招及年后找工作的小伙伴应该感受到了寒气逼人&#xff0c;机会又少、又卷……加上chatGPT的出现&#xff0c;可以预见未来几年&#xff0c;简单、基础、重复性工作大概率会被机器人取代……我们将何去何从呢&#xff1f;毫无疑问&#xff0c;成为技术大牛&#xff01; 如…

友盟分享QQ的时候提示应用未正确授权错误码901111

今天打包分享qq的时候突然出现应用未正确授权错误码901111 于是就上友盟和腾讯开放平台上找对应错误码&#xff0c;居然没有发现对应的错误码&#xff01; 经过一番折腾后发现 这个错误是因为在腾讯开放平台没有提交apk的原因导致的 登录腾讯开放平台选择我们的应用 点击进…

微信授权APP第三方登陆(Android)

前几天负责的程序说是要加入第三方登陆的功能&#xff0c;虽然现在有服务商集成了第三方登陆&#xff0c;但是平时所用的也就微信和QQ&#xff0c;就自己看文档写了&#xff0c;其中也遇到了一些问题&#xff0c;然后我把我做这个的流程贴出来&#xff0c;并附上对应的Demo&…

qq授权登录【网站应用】-java版本

第一步&#xff1a;先去qq互联进行创建网站应用&#xff1a;QQ互联 如下图&#xff1a; 第二步&#xff1a;引入qq的jar包&#xff0c;这里采用maven方式引用 <!--QQ坐标--><dependency><groupId>net.gplatform</groupId><artifactId>Sdk4J<…

微信授权登陆-app

app接入第三方微信登陆功能&#xff1a; 移动应用微信登录是基于OAuth2.0协议标准 构建的微信OAuth2.0授权登录系统&#xff0c;前提你需要到微信开放平台注册开发者帐号&#xff0c;并拥有一个已审核通过的移动应用&#xff0c;并获得相应的AppID和AppSecret&#xff0c;申请…

Polkit授权管理

Polkit的配置&#xff1a; 查看polkit服务&#xff1a; 一个是agent&#xff0c;一个是polkit服务&#xff1b; agent包含监听接口和一个用户界面&#xff08;对话窗口&#xff09;&#xff0c;允许用户输入密码。Authentication Agent API Reference(https://www.freedesktop…

chatgpt赋能python:Python实现人脸识别

Python 实现人脸识别 随着人工智能技术的发展&#xff0c;人脸识别已经成为一个热门话题。Python作为一种流行的编程语言&#xff0c;也可以用来实现人脸识别。在这篇文章中&#xff0c;我们将介绍使用Python实现人脸识别的方法。 人脸识别的原理 人脸识别是通过计算机程序识…

比尔·盖茨到达北京;印度要求中国手机品牌高管应为印籍;Android 14 Beta 3 推出|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

亚马逊高调入局ChatGPT大战,发布Titan大模型、AI编程助手全免费,CEO:改变所有体验...

MLNLP社区是国内外知名的机器学习与自然语言处理社区&#xff0c;受众覆盖国内外NLP硕博生、高校老师以及企业研究人员。 社区的愿景是促进国内外自然语言处理&#xff0c;机器学习学术界、产业界和广大爱好者之间的交流和进步&#xff0c;特别是初学者同学们的进步。 转载自 |…

【图像分割】TransUNet学习笔记

论文名称&#xff1a;TransUNet: Transformers Make Strong Encoders for Medical Image Segmentation 论文地址&#xff1a;https://arxiv.org/pdf/2102.04306.pdf 代码地址&#xff1a;https://github.com/Beckschen/TransUNet 前言&#xff1a; TransUNet将Transformer和U-…

什么是分镜?用UniStory管理分镜,制定拍摄计划和讨论故事板

分镜是什么 一部成功的电影、电视剧、广告、Vlog等视觉体验&#xff0c;都离不开分镜创作 分镜又叫做故事版&#xff0c;用于早期电影内容的策划和制作&#xff0c;在电影拍摄之前根据导演的要求&#xff0c;用图表的方式来说明影像的构成。一般120分钟的电影&#xff0c;需要2…

AI打LeetCode周赛进入前10%!秘诀:自然语言编程

张晓雅 投稿自 凹非寺量子位 | 公众号 QbitAI 还在自己吭哧吭哧打算法平台Leetcode的周赛&#xff1f;为什么不试试神奇的ChatGPT类AI呢&#xff01; 用AI助手Claude参加第103场周赛&#xff0c;共四道题&#xff0c;均完成了AC&#xff0c;能达到参与者前10%的成绩。 事情的起…

怎么做好电商运营?40份电商运营表格模板,你离优秀的运营只差了一个表格

怎么做好电商运营&#xff1f;40份电商运营表格模板&#xff0c;你离优秀的运营只差了一个表格 618又来了&#xff01;每年的这个时候&#xff0c;都是电商促销活动的高潮&#xff0c;各种优惠活动层出不穷&#xff0c;不管是对你是做电商运营的还是一个消费者&#xff0c;都很…

【跨境电商】EDM邮件营销完整指南(一):概念,区别与优势

关键词&#xff1a;EDM营销&#xff0c;邮件营销&#xff0c;跨境电商 2020年&#xff0c;全球每天发送和接收3064亿封电子邮件。世界上几乎每个人都有一个电子邮件地址&#xff0c;并且电子邮件营销继续拥有最高的投资回报率&#xff0c;这使得电子邮件营销策略对于企业营销工…

学习WooCommerce跨境电商社交媒体营销

WooCommerce 长期以来一直为电子商务店主提供多样化的服务。大约 500 万家商店啓用安装了免费的 WooCommerce 插件。 官方 WooCommerce 插件从 WordPress.org 下载了161,908,802次&#xff0c;并且还在增加。 超过5,106,506 个网站正在使用 WooCommerce。 本文网址: https…

跨境电商人才投放推特广告文案技巧

推特的用户群体广泛&#xff0c;非常适合跨境卖家作为广告投放的引流平台。那么对于跨境电商运营来说&#xff0c;投放推特广告有哪些文案技巧呢?下面海熹跨境人才网来给大家介绍一下&#xff0c;感兴趣的卖家一定不要错过哦。 首先&#xff0c;Twitter建议卖家采用“三R”法进…

文案把卖点被埋没?如此挖掘电商产品卖点,让你轻松获客

绝大部分电商卖家开店面临的最大问题就是不知道如何写文案&#xff0c;直接复制品牌的文案容易被告Q权&#xff0c;自己写的又不吸引人&#xff0c;复制竞争对手的更是无法脱颖而出。同时你也不知道这个文案到底好不好&#xff0c;在别人那里可行的文案&#xff0c;可能你就完全…

工作三年后的胡思乱想

大家好&#xff0c;我是若川。我持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 点此扫码加我微信 lxchuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试…

如何通过抖音引流推广自己的产品?如何利用抖音引流营销推广?

自抖音公布迄今&#xff0c;短视频形式抖音一路在再次爆红&#xff0c;到当初为止已有着超出5亿的用户人潮了&#xff0c;咱们都晓得抖音是今日头条发的APP&#xff0c;也归属于字节扑腾的部手机硬件之一。当抖音粉絲量往低落时&#xff0c;其营销推广运用价格也被延续的挖掘进…