部分库与使用方法总结(自用)
1.tqdm
tqdm是Python的进度条库,可以在长循环操作中显示进度提示
tqdm.tqdm:传入数字
from tqdm import tqdm
for i in tqdm(range(1, 5)):print(i)
使用bar_format = "{l_bar}{bar}"可以只显示进度条
from tqdm import tqdm
for i in tqdm(range(1, 5), bar_format="{l_bar}{bar}"):pass
传入字符串:
from tqdm import tqdm
for i in tqdm(["a", "b", "c"]):print(i)
tqdm.trange:用来省略的表达tqdm(range())
from tqdm import trange
for i in trange(range(1, 5)):print(i)
set_description:实现实时查看每次处理的数据
from tqdm import tqdm
pbar = tqdm(["a", "b", "c", "d"])
for c in pbar:pbar.set_description("Processing %s" % c)
上述文字转述自
Python中tqdm模块介绍_python_木南成长之路-DevPress官方社区 (csdn.net)
2.torch.backends.cudnn
cuDNN(CUDA Deep Neural NetWork library):是NVIDIA打造的针对神经网络的加速库,是一个用于深度神经网络的GPU加速库,它不是必须使用的库,但是一般会采用这个库。
torch.backends.cudnn.benchmark = True
上述代码会让程序在开始运行时花费一点额外时间为整个网络的每个卷积层搜索最适合它的卷积实现算法,进而实现网络的加速。
该代码的使用仅适用于网络结构固定(非动态变化),网络的输入形状(batch_size、图片的大小,输入的通道)是不变的,否则可能会降低运行效率。
torch.backends.cudnn.deterministic = True
上述代码的使用是为了避免因为计算的随机性造成的每次网络前馈结果略有差异引起的结果波动。
上述文字转述自:
(28条消息) torch.backends.cudnn系列用法_猜猜我是谁.+的博客-CSDN博客
torch.backends.cudnn.enabled = True
上述代码的使用在设置使用非确定性算法
3.argparse.ArgumentParser()的使用
argument模块用来进行命令行接口的编写,程序定义需要的参数,然后argument解决从sys.argv解析出参数的方式,同时argument还会自动生成帮助和使用手册,并在用户给程序差内无效参数时报出错误信息。
import argparse
paper = argparse.ArgumentParser()
上述代码用来创建解析器
paper.add_srgument(name or flags...[,action][,nargs][,const][,default][.type][,choices][,required][,help][,metavar][,dest])
下面是对上述程序的逐个参数解释:
name or flags : 字符串的名字或者列表
action : 当参数在命令行中出现时使用的动作
nargs : 应该读取的命令行个数
const : 不指定参数时的默认值
type : 命令行参数应该被转换成的类型
choices : 参数可允许的值的另一个容器
required : 可选参数是否可省略
help : 参数的帮助信息
metavar : 在usage说明中的参数名称,对于必选参数默认是参数名称,对于可选参数默认是全大写的参数名称
dest : 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线
default : 表示默认路径
paper.parse_args()
上述程序用来解析参数
exp_path = paras.exppath
上述程序用来调用参数
上述文字转述自:
(28条消息) argparse.ArgumentParser()用法解析_开心邮递员的博客-CSDN博客
4,importlib.import_module()的使用
这个函数是用来动态导入对应的配置文件运行来适应不同项目的配置需要
import importlib
params = importlib.import_module('b.c.c') #绝对导入
params = importlib.import_module('.c.c',package='b') #相对导入
上述程序为使用方法,分为绝对导入,相对导入两种
#对象中取出需要的对象
params.args #取出变量
params.c #取出class C
params.C.c #取出class C 中的c方法
上述程序为提取需要的对象使用的方法
上述文字转述自:
Python中动态导入对象importlib.import_module()的使用 - 灰信网(软件开发博客聚合) (freesion.com)
5.datetime模块中strftime/strptime函数的使用
PYthon中的datetime模块提供了日期格式和字符串格式相互转化的函数strftime/strptime
from datetime import datetime
datetime.datetime.strftime()
datetime.datetime.strptime()
上述程序中:
第一个:由日期格式转化为字符串格式的函数
第二个:由字符串格式转化为日期格式的函数
上述函数中涉及日期时间的格式化字符串,列举如下:
%a:星期几的简写
%A:星期几的全称
%b:月份的简写
%B:月份的全称
%c:标准的日期的时间串
%C:年份的后两位数字
%d:十进制表示的每月的第几天
%D:月/天/年
%e:在两字符域中,十进制表示的每月的第几天
%F:年-月-日
%g:年份的后两位数字,使用基于周的年
%G:年份,使用基于周的年
%h:简写的月份名
%H:24小时制的小时
%I:12小时制的小时
%j:十进制表示的每年的第几天
%m:十进制表示的月份
%M:十进制表示的分钟数
%n:新行符
%p:本地的AM或PM的等价显示
%r:12小时的时间
%R:显示小时和分钟:hh:mm
%S:十进制的秒数
%t:水平制表符
%T:显示时分秒
%u:每周的第几天,星期一为第一天(值从0到6,星期一为0)
%U:一年中的星期数(00-53)星期天为星期的开始
%V:每年的第几周,使用基于周的年
%w:十进制表示的星期几,(值从0到6,星期天为0)
%W:每年的第几周,把星期一作为第一天(值从0到53)
%x:标准的日期串
%X:标准的时间串
%y:不带世纪的十进制年份(值从0到99)
%Y:带世纪部分的十进制年份
%z,%Z:时区名称,如果不能得到时区名称则返回空字符%%:百分号
上述文字转自:
python中datetime模块中strftime/strptime函数的使用_python_脚本之家 (jb51.net)
5.torch.nn.DataParallel用法
torch.nn.DataParallel函数用来使用多个GPU加速训练
model = model.cuda()
device_ids = [0,1]
model = torch.nn.DataParallel(model,device_ids=device_ids)
device_ids = [0,1]
model = torch.nn.DataParallel(model,device_ids=device_ids).cuda()
上述程序为在实际使用过程中的书写方式
CLASS torch.nn.DataParallel(model,device_ids=None,output_ddevice=None,dim=0)
参数解析:
module : 表示定义的模型
device_ids:表示训练的device
output_device:表示输出结果的device
注:最后一个参数在一般情况下是省略不写的,那么默认就是在device_ids[0],也就是在第一块卡上,如此也就解释了为什么第一块卡的显存会占用的比其他卡要多一些
上述文字转述自:
【pytorch系列】torch.nn.DataParallel用法详解_大黑山修道-DevPress官方社区 (csdn.net)
6.torch.optim.Adam方法的使用和参数解释
Adam本质上是带有动量项的RMSprop,它利用梯度的一阶矩估计和二阶矩估计动态调整每个每个参数的学习率。它的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳
class torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0)
上述程序为使用格式,具体参数的定义如下:
params(iterable) : 可用于迭代优化的参数或者定义参数组的dicts
lr(float,optional): 学习率(默认:1e-3)
betas(Tuple[float,float],optional):用于计算梯度的平均和平方的系数(默认:(0.9,0.999))
eps(float,optional): 为了提高数值稳定性而添加到分母的一项(默认:1e-8)
weight_decay(float,optional): 权重衰减(如L2惩罚)(默认:0)
step(closure=None)函数: 执行单一的优化步骤
closure(callable,optional): 用于重新评估模型并返回损失的一个闭包
注:
lr : 同时也可称为学习率或步长因子,它控制了权重的更新比率(如 0.001) 较大的值(如0.3)在学习率更新前会有更快的初始学习,而较小的值(如1.0E-5)会令训练收敛到更好的性能。
betas = (beta1,beta2)
beta1 :一阶矩估计的指数衰减率(如0.9)
beta2:二阶矩估计的指数衰减率(如0.999)。该超参数在稀疏梯度(如在NLP或计算机视觉任务中)中应该设置为接近1的数。
eps:epsilon:该参数是非常小的数,其为了防止在实现中除以零(如10E-8)
Adam的特点有:
1、结合了Adagrad善于处理系数梯度和RMSprop善于处理非平稳目标的优点
2、对内存需求较小
3、为不同的参数计算不同的自适应学习率
4、也适用于大多非凸优化-使用于大数据集和高维空间。
上述文字转述自:
(28条消息) torch.optim优化算法理解之optim.Adam()_torch.optim.adam_shuaiqidexiaojiejie的博客-CSDN博客
(28条消息) pytorch 中 torch.optim.Adam 方法的使用和参数的解释_Ibelievesunshine的博客-CSDN博客_torch.optim.adam
7.Python中的filter()函数的使用
filter()函数用于过滤序列,过滤掉不符合条件的元素,返回符合条件的元素组成的新列表
filter(function,iterable)
注:
function 为 判断函数
iterable 为 可迭代对象
序列中的每个元素作为参数传递给函数进行判断
返回True或者False,最后将返回的True的元素放到新列表中
def is_odd(n):return n%2 == 1
lst1 = filter(is_odd,[1,2,3,4,5,6,7,8,9,10])# lst = [1,3,5,7,9]
上方程序为实例:筛选出序列中为奇数的元素
list_num = [1, 2, 3, 0, 8, 0, 3]
print(list(filter(lambda x: x, list_num)))结果为:
[1, 2, 3, 8, 3]
上方程序为实例:过滤掉列表当中的数字0
注:lambda的使用
lambda 是Python预留的关键字,lambda函数是匿名函数,lambda函数有输入和输出,lambda函数一般功能简单
lambda的使用方法固定,即定义一个lambda函数
1、将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数
栗子:add = lambda x,y:x+y 这条代码定义了加法函数lambda x,y:x+y,并将其赋值给变量add,这样变量add便成为具有加法功能的函数。
2、将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换
3、将lambda函数作为其他函数的返回值,返回给调用者
4、将lambda函数作为参数传递给其他函数
栗子:
filter函数:此时lambda函数用于指定过滤列表元素的条件
sorted函数:此时lambda函数用于指定对列表中所有元素进行排序的准则
map函数: 此时lambda函数用于指定对列表中每一个元素的共同操作
reduce函数:此时lambda函数用于指定列表中两两相邻元素的结合条件
此处文字摘自:
(28条消息) 关于Python中的lambda,这篇阅读量10万+的文章可能是你见过的最完整的讲解_肖哥shelwin的博客-CSDN博客_python lambda
list_word = ['a', 'B', 'c', 'd', 'E']
print(list(filter(lambda x: x.isupper(), list_word)))
print(list(filter(lambda x: x.islower(), list_word)))结果为:
['B', 'E']
['a', 'c', 'd']
上方程序为实例:过滤列表中数字的大小写(针对的是字母全都是大写或者小写的情况)
上述文字摘选自:
(28条消息) python 中的 filter() 函数——用于过滤序列,过滤掉不符合条件的元素,返回符合条件的元素组成新列表。_python的filter_牛牛来了的博客-CSDN博客
相关文章:
部分库与使用方法总结(自用)
1.tqdm tqdm是Python的进度条库,可以在长循环操作中显示进度提示 tqdm.tqdm:传入数字 from tqdm import tqdm for i in tqdm(range(1, 5)):print(i)使用bar_format "{l_bar}{bar}"可以只显示进度条 from tqdm import tqdm for i in tqdm(range(1, 5), ba…...
C++实现日期类
文章目录前言1.日期类的功能分析1.大致分析2.接口设计2.具体实现1.日期类的成员函数和成员变量2.初始化(构造函数)3.对日期进行天数推算4.比较相关的运算符重载5.前置后置自增或自减6.日期相减与流插入流提取1.日期相减2.重载流插入和流提取3.总结前言 之前介绍了C…...
想成为一名专业黑客,但不知道从哪里学起?我来教你。
成为一名黑客需要学什么? 想成为一名专业黑客,但不知道从哪里学起”很多人在后台问过这个问题,今天就为你介绍成为专业黑客必须学习的十个方面的知识,希望能为迷惘中的你指明方向。 想要成为网络hacker黑客?先来学习…...
VMware ESXi 7.0 U3k Unlocker OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)
ESXi 7 U3 标准版集成 Intel 网卡、USB 网卡 和 NVMe 驱动 请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u3-sysin/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org 本次针对 2023-02-21 发布的 ESXi …...
新的计算方法:预测益生菌在不同生长条件下的相互作用
谷禾健康 益生菌可以产生有益的维生素、消化酶、必需氨基酸、免疫调节和抗菌代谢产物,从而促进人体健康,预防肠道炎症性疾病、自身免疫性疾病和胃肠道感染。其宝贵特性已得到健康行业、医疗专业人士和公众的认可。 比起单菌株益生菌,多菌株益…...
python自学之《21天学通Python》(13)——第16章 数据库编程
数据库指的是以一定方式存储在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。而我们平时所说的数据库实际上是包含了数据库管理系统(DBMS)的,数据库管理系统是为管理数据库而设计的软件系统,它一…...
[架构之路-118]-《软考-系统架构设计师》-软架构设计-11-可靠性相关设计
第11节 可靠性相关设计11.1 可靠性基本概念可靠性工程是研究产品生命周期中故障的发生、发展规律,达到预防故障,消灭故障,提高产品可用性的工程技术。信息系统的可靠性是指系统在满足一定条件的应用环境中能够正常工作的能力,可以…...
电阻串联的作用
电阻串联常见作用 第一个作用是:阻抗匹配: 因为信号源的阻抗很低,跟信号线之间阻抗不匹配,串上一个电阻后,可以改善匹配情况,以减少反射,避免振荡等。 常见的阻抗匹配方法 1、使用变压器来做…...
leetcode 1675. Minimize Deviation in Array(最小化数组偏差)
数组里面有n个正整数,里面的数字可以无限次进行如下操作: 1.偶数可以除以2 2.奇数可以乘以2 数组中任意两元素差的最大值称为偏差。 把数组中的元素进行上面2种操作,使偏差最小。 思路: 数组中现有2种数字,一种是奇数…...
特征向量中心度(eigenvector centrality)算法原理与源码解析
前言 随着图谱应用的普及,图深度学习技术也逐渐被越来越多的数据挖掘团队所青睐。传统机器学习主要是对独立同分布个体的统计学习,而图深度学习则是在此基础上扩展到了非欧式空间的图数据之上,通过借鉴NLP和CV方向的模型思想,衍生…...
Vue3 中组件的使用(上)
目录前言:一、什么是组件二、注册组件1. 全局注册2. 局部注册二、传递数据【父 -> 子】1. 字符串数组的形式2. 对象的形式三、组件事件【子 -> 父】1. 字符串数组式声明自定义事件2. 【子组件】触发组件事件3. 【父组件】监听子组件自定义事件4. 组件事件例子…...
spring-boot、spring-cloud、spring-cloud-alibaba版本对应
一、查询 spring-boot(spring-boot-starter-parent) 版本号 https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent 二、查询 spring-cloud(spring-cloud-dependencies) 版本号 https://mvnrepository.com/artifact/org.springframework…...
【沐风老师】3DMAX一键楼梯脚本插件StairGenerator使用教程
3DMAX一键楼梯插件StairGenerator,不需要花费太多的时间,轻松从2D平面图生成3D楼梯模型,生成的楼梯模型细节丰富真实。 【主要功能】 1.简单:轻松实现2D到3D建模。 2.具有最详细三维结构的台阶平面图。 3.楼梯各部件完全参数化…...
OpenShift 简介
OpenShift 是红帽 Red Hat 公司基于开源的云平台,是平台即服务(PaaS),是一种容器应用平台。允许开发人员构建、测试和部署云应用。该系统是在 K8S 核心之上添加工具,从而实现更快的应用开发、部署及扩展。 在 OpenShi…...
netty自定义封包实现
文章目录说明分享内置编码器和解码器解码器编码器代码实现创建核心类消息实体类自定义编码类自定义解码类服务端ServerHandler入口类客户端ClientHandler入口类测试参考总结说明 netty是java重要的企业级NIO,使用它可以快速实现很多功能通信功能如:http、…...
ORA error集锦
1、oralce 数据客户端需要安装的问题 保存信息为: “无法连接到数据库,因为数据库客户端软件无法加载。确保已正确安装并配置数据库客户端软件” 从百度网盘下载,并安装win32 oracle client 安装包 2、ORA错误 “执行异常,ORA-00911: inval…...
格雷码的实现
格雷码:任意两个相邻的二进制数之间只有一位不同 想必通信专业的学生应该都接触过格雷码,它出现在数电、通信原理等课程里。 如下图所示一个四位格雷码是什么样子的: 格雷码的特点: 其最大的特点是任意上下相邻的两个码值间&am…...
快到金3银4了,准备跳槽的可以看看
前两天跟朋友感慨,今年的铜九铁十、裁员、疫情导致好多人都没拿到offer!现在已经12月了,具体明年的金三银四只剩下两个月。 对于想跳槽的职场人来说,绝对要从现在开始做准备了。这时候,很多高薪技术岗、管理岗的缺口和市场需求也…...
最新BlackArch发布,提供1400款渗透测试工具
近日,BlackArch Linux新版本发布,此版本为白帽子和安全研究人员提供了大约1400款渗透测试工具,如果你是一位白帽子或者安全研究人员,这个消息无疑会让你很感兴趣。BlackArch Linux是一款基于Arch Linux的发行版,主要面…...
重走前端路JS进阶篇:This 指向与箭头函数
JavaScript 高级 This 指向规则 案例 function foo() {console.log(this)}// 1 调用方式1foo();// 2 调用方式2 放入对象中调用var obj {name: "why",foo: foo}obj.foo()// 调用方式三 通过 call/apply 调用foo.call("abc")指向定义 this 是js 给函数的…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
