当前位置: 首页 > news >正文

开源代码seo算法培训

开源代码,seo算法培训,商城网站是怎么做的,wordpress显示ip1.BatchNorm2d归一化图像时所使用的均值(running_mean,batch_mean)和方差(running_var,batch_var) BatchNorm2d在 eval 模式下归一化图像使用的就是训练过程中训练样本累计的running_mean和running_var。 …

1.BatchNorm2d归一化图像时所使用的均值(running_mean,batch_mean)和方差(running_var,batch_var)

BatchNorm2d在 eval 模式下归一化图像使用的就是训练过程中训练样本累计的running_mean和running_var。

然而,在train模式下:(1)BatchNorm2d归一化图像使用的均值和方差为当前批次数据的batch_mean和batch_var;(2)即便不使用反向传播,只要数据经过了模型,模型中BatchNorm2d的均值和方差就会按照(1-momentum) * running_mean + momentum*batch_var(默认momentum是0.1)进行更新。也就是说,看上去在train模式下你没有反向传播更新参数,但是每一个batch经过模型以后,BatchNorm2d的running_mean和running_var持续更新。不过这个更新对输出并不影响,如前面说的,train模式下图像归一化仅与批次数据的batch_mean和batch_var有关。

这事实上也就能够理解为什么很多人说:就BatchNorm2d而言,训练时使用大的batch_size是更好的。因为训练时使用batch_mean和batch_var归一化,而测试时使用running_mean和running_var归一化。训练时更大的batch_size使batch_mean和batch_var更接近于running_mean和running_var,因此训练时的结果和测试时的结果更加相近。另外,更大的batch_size使得训练时的batch_mean和batch_var更加稳定。

还值得注意的是,因为eval模式下使用running_mean和running_var,所以无论你的batch_size设置成多大,它的结果都是一样的。然而,如果你强行用train模式进行测试,此时使用的是batch_mean和batch_var。在batch_size设置较大时,batch_mean和batch_var和running_mean和running_var相近,性能接近于真实性能,而当batch_size设置较小时,batch_mean和batch_var和running_mean和running_var相差很大,那么性能就可能出现很大的问题。

2.多卡训练且模型中包含了BatchNorm2d

如果你进行了多卡训练,同时训练的模型包含了BatchNorm2d层,这可能导致每张卡维护的running_mean和running_var是不同的,最后保存的时候通常只是保存了“当前主卡”(rank 0)上的那一份running_mean和running_var。

为了避免这一情况,多卡训练时需要将BatchNorm2d转换成SyncBatchNorm。关于多卡DDP的使用,博客https://www.cnblogs.com/liyier/p/18136458有详细的说明。

import torch.distributed as dist
from torch.nn.parallel import DistributedDataParallel as DDP
from torch.utils.data import DistributedSampler
import tracebackdef	setup_ddp(rank, world_size)dist.init_process_group(backend="nccl", init_method="env://")torch.cuda.set_device(rank)def cleanup_ddp():dist.destroy_process_group()def main():rank = int(os.environ["LOCAL_RANK"])world_size = int(os.environ["WORLD_SIZE"])setup_ddp(rank, world_size)...dataset = ... #就是正常加载数据集sampler = DistributedSampler(dataset, num_replicas=world_size, rank=rank, shuffle=True)dataloader = DataLoader(dataset, batch_size=64, sampler=sampler, numworkers=8) # 注意,这里不能再手动设置shuffle了,不然就会和sampler冲突报错...model = model.to(rank)model = nn.SyncBatchNorm.convert_sync_batchnorm(model)model = DDP(model, device_ids=[rank], output_device=rank)...model.train()for epoch in range(100):sampler.set_epoch(epoch) # shuffle different on each epochfor inputs, labels in dataloader:inputs = inputs.to(rank)labels = labels.to(rank)if rank == 0:torch.save(...) cleanup_ddp()if __name__ == "__main__":try:main()except Exception as e:print(f"[Rank {os.environ.get('RANK')}] error:")traceback.print_exc()raise e

运行时使用如下代码:

export OMP_NUM_THREADS=4
torchrun --nproc_per_node=2 ./encrypted/code/train.py
http://www.cadmedia.cn/news/6424.html

相关文章:

  • 智慧团建学生登录入口手机版怎么做好seo内容优化
  • 网页服务器一年多少钱廊坊seo快速排名
  • 义乌门户网站建设痘痘如何去除效果好
  • shopncwindows优化大师好不好
  • 电子科技技术支持东莞网站建设好网站制作公司
  • 山西专业网站建设价目手机百度下载免费
  • 商城网站建设哪家便宜无人区在线观看高清1080
  • 哪里有服务好的网站建设360广告推广平台
  • 重庆网站建设公司有哪些什么时候友情链接
  • 网站icp备案流程站内优化怎么做
  • 南京江宁区住房建设局网站百度的代理商有哪些
  • 免费网站建站一级大陆平台seo什么意思
  • 智联招聘网最新招聘2022seo站内优化最主要的是什么
  • 网站建设过程郑州seo网络推广
  • 班徽logo设计图片武汉seo全网营销
  • 网站建设数据中心如何联系百度人工客服
  • 用手机搭建自己的网站网络营销怎么做?
  • 织梦新闻门户网站模板橘子seo查询
  • 市政府网站建设建议软文范例大全1000字
  • 建设银行个人网上银行网站加载发软文是什么意思
  • 做微信网站公司哪家好网站seo技术
  • 银川市住房城乡建设局网站北京网聘咨询有限公司
  • 网站建设项目说明书广州最新消息
  • 家政公司网站建设6个好用的bt种子搜索引擎
  • 湖南营销型网站建设 j磐石网络短视频运营公司
  • 电脑版 做网站尺寸培训心得体会2000字
  • 宜城市城乡建设局网站百度的网站
  • 长春网页建站模板疫情最新政策最新消息
  • 建站策划设计公司seo网站推广助理招聘
  • 网站工程专业是什么深圳网络优化公司