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. mysql 自动 分库 备份_MySQL分库备份的方法

    分库备份的意义是什么 ? 有时一个企业的数据库里面有多个库,例如(www,bbs,cms),但是出问题时可能是某一个库,如果在备份时候把所有的库备份成一个数据文件的话,恢复数据就比较麻烦. 分库备份方 ...

  2. lua State加载部分库

    lua State加载部分库 在lua中,通常我们用luaL_openlibs(L)加载所有的lub标准库,但是有时候我们想只加载部分,有没有什么好的办法呢?在luaproc看到如下办法: stati ...

  3. C#部分类与部分方法

    部分类也可以定义部分方法.部分方法在部分类中定义,但没有方法体,在另一个部分类中执行.在这两个部分类中,都要使用partial关键字. public partial class MyClass { p ...

  4. C#.NET 通用权限管理系统组件 大数据多表分页获取部分列的参考方法

    往往我们开发各种信息系统的时候,不只是简单的从一个表读取数据,很可能是从多个表读取数据后,把结果展示在界面上,当遇到2个大表关联时,若技术上没进行一些处理,那分页显示时速度会非常糟糕,在通用权限管理系 ...

  5. MySQL:常用分库分表方法

    目录 一.数据库瓶颈 1.IO瓶颈 2.CPU瓶颈 二.分库分表 1.水平分库 2.水平分表 3.垂直分库 4.垂直分表 三.分库分表工具 四.分库分表步骤 1.非partition key的查询问题 ...

  6. mysql主从只同步部分库或表

    同步部分数据有两个思路,1.master只发送需要的:2.slave只接收想要的. master端: binlog-do-db      二进制日志记录的数据库(多数据库用逗号,隔开) binlog- ...

  7. 部分库不支持32位系统archive报错:Undefined symbols for architecture armv7

    Undefined symbols for architecture armv7: "_av_copy_packet", referenced from: _DuplicatePk ...

  8. STM32F0xx部分库文件说明

    一.system_stm32f0xx.c 系统时钟设置文件,目录:Libraries\CMSIS\Device\ST\STM32F0xx\Source\Templates\system_stm32f0 ...

  9. windows界面-python-运动倒计时程序

    windows-python-运动倒计时程序 程序中使用到的部分库的使用方法会在之后的文章中更新 程序预览 涉及的库 tkinter win32 win32.lib xlrd == 1.2.01 其中 ...

最新文章

  1. 教你一分钟内导出 Grafana 所有的 Dashboard
  2. linux java开发配置_Linux-Java开发环境配置
  3. C#开发VS LUA开发
  4. 【火炉炼AI】机器学习013-用朴素贝叶斯分类器估算个人收入阶层
  5. 简单实现vue验证码60秒倒计时功能
  6. 嵌入式开发概述(树莓派介绍)
  7. 计算机网络基础:网络标准相关知识介绍
  8. 架构之路(八)从CurrentUser说起
  9. Effective Java~38. 用接口模拟可扩展的enum
  10. linux 进程的 5 大段
  11. LAMP之apache调优
  12. avast premier 安装文件及许可破解步骤
  13. Debian彻底卸载MySQL
  14. 封装Win 10系统时封装工具报错,无法正常封装,封装失败
  15. OBS,vMIX,Wirecast,TCliveSP直播串流导播软件区别及比较
  16. vue实现页面跳转过渡效果 transition
  17. linux mint 17 输入法,LinuxMint17.1 Rebecca中安装设置输入法
  18. 问题记录:键盘win键无法使用,组合键无反应,win+L不能锁屏
  19. VMware的 Mount虚拟光驱问题
  20. 什么是迅驰1、2、3、4代

热门文章

  1. 新手易学——电脑入门
  2. Python Pandas 函数ix被弃用
  3. 软件测试面试题目精选之浦发银行
  4. FlexJava个人博客——序言
  5. 华为应用锁退出立即锁_华为应用锁退出不立即上锁
  6. python画黑白线条_基于python的彩色图片转素描和黑白
  7. 七桥问题属于计算机科学方法论中的,华中科技大学-计算机科学与技术方法论-2计算学科中的科学问题.ppt...
  8. mysql认证考试 含金量_计算机二级证书含金量有多高?你真的知道吗?
  9. android和MTKP60哪个好,高通450和联发科p60哪个比较好?
  10. 微博/微信登录与分享、微信/支付宝支付