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

软件网站开发广西网络电视

软件网站开发,广西网络电视,制作网站怎么制作,网站站内优化怎么做前言 在 PPQ 中我们目前提供两种不同的算法帮助你微调网络 这些算法将使用 calibration dataset 中的数据#xff0c;对网络权重展开重训练 经过训练的网络不保证中间结果与原来能够对齐#xff0c;在进行误差分析时你需要注意这一点 在训练中使用 with ENABLE_CUDA_KERNEL…前言 在 PPQ 中我们目前提供两种不同的算法帮助你微调网络 这些算法将使用 calibration dataset 中的数据对网络权重展开重训练 经过训练的网络不保证中间结果与原来能够对齐在进行误差分析时你需要注意这一点 在训练中使用 with ENABLE_CUDA_KERNEL(): 子句将显著加速训练过程 训练过程的缓存数据将被贮存在 gpu 上这可能导致你显存溢出你可以修改参数将缓存设备改为 cpu code from typing import Iterableimport torch import torchvisionfrom ppq import (QuantizationSettingFactory, TargetPlatform,graphwise_error_analyse) from ppq.api import QuantizationSettingFactory, quantize_torch_model from ppq.api.interface import ENABLE_CUDA_KERNEL from ppq.executor.torch import TorchExecutor# ------------------------------------------------------------ # 在 PPQ 中我们目前提供两种不同的算法帮助你微调网络 # 这些算法将使用 calibration dataset 中的数据对网络权重展开重训练 # 1. 经过训练的网络不保证中间结果与原来能够对齐在进行误差分析时你需要注意这一点 # 2. 在训练中使用 with ENABLE_CUDA_KERNEL(): 子句将显著加速训练过程 # 3. 训练过程的缓存数据将被贮存在 gpu 上这可能导致你显存溢出你可以修改参数将缓存设备改为 cpu # ------------------------------------------------------------BATCHSIZE 32 INPUT_SHAPE [BATCHSIZE, 3, 224, 224] DEVICE cuda PLATFORM TargetPlatform.PPL_CUDA_INT8def load_calibration_dataset() - Iterable:# ------------------------------------------------------------# 让我们从创建 calibration 数据开始做起 PPQ 需要你送入 32 ~ 1024 个样本数据作为校准数据集# 它们应该尽可能服从真实样本的分布量化过程如同训练过程一样存在可能的过拟合问题# 你应当保证校准数据是经过正确预处理的、有代表性的数据否则量化将会失败校准数据不需要标签数据集不能乱序# ------------------------------------------------------------return [torch.rand(sizeINPUT_SHAPE) for _ in range(32)] CALIBRATION load_calibration_dataset()def collate_fn(batch: torch.Tensor) - torch.Tensor:return batch.to(DEVICE)# ------------------------------------------------------------ # 我们使用 mobilenet v2 作为一个样例模型 # PPQ 将会使用 torch.onnx.export 函数 把 pytorch 的模型转换为 onnx 模型 # 对于复杂的 pytorch 模型而言你或许需要自己完成 pytorch 模型到 onnx 的转换过程 # ------------------------------------------------------------ model torchvision.models.mobilenet.mobilenet_v2(pretrainedTrue) model model.to(DEVICE)# ------------------------------------------------------------ # PPQ 提供基于 LSQ 的网络微调过程这是推荐的做法 # 你将使用 Quant Setting 来调用微调过程并调整微调参数 # ------------------------------------------------------------ QSetting QuantizationSettingFactory.default_setting() QSetting.lsq_optimization True QSetting.lsq_optimization_setting.block_size 4 QSetting.lsq_optimization_setting.lr 1e-5 QSetting.lsq_optimization_setting.gamma 0 QSetting.lsq_optimization_setting.is_scale_trainable True QSetting.lsq_optimization_setting.collecting_device cuda# ------------------------------------------------------------ # 如果你使用 ENABLE_CUDA_KERNEL 方法 # PPQ 将会尝试编译自定义的高性能量化算子这一过程需要编译环境的支持 # 如果你在编译过程中发生错误你可以删除此处对于 ENABLE_CUDA_KERNEL 方法的调用 # 这将显著降低 PPQ 的运算速度但即使你无法编译这些算子你仍然可以使用 pytorch 的 gpu 算子完成量化 # ------------------------------------------------------------ with ENABLE_CUDA_KERNEL():quantized quantize_torch_model(modelmodel, calib_dataloaderCALIBRATION,calib_steps32, input_shapeINPUT_SHAPE,settingQSetting, collate_fncollate_fn, platformPLATFORM,onnx_export_file./model.onnx, deviceDEVICE, verbose0)# ------------------------------------------------------------# 当我们完成训练后我们将调用 graphwise_error_analyse 方法分析网络误差# 经过训练的中间层误差可能很大但这不是我们所关心的 —— 训练方法只优化最终输出的误差# 一个量化良好的网络最后输出层的误差不应大于 10%# ------------------------------------------------------------graphwise_error_analyse(graphquantized, running_deviceDEVICE, dataloaderCALIBRATION,collate_fncollate_fn)# ------------------------------------------------------------ # 下面我们向你展示另一种 PPQ 中提供的优化方法 # 在 PPQ 0.6.5 之后我们将这部分扩展性的方法移出了 QuantizationSetting # 现在扩展性方法需要手动调用 # ------------------------------------------------------------ model torchvision.models.mobilenet.mobilenet_v2(pretrainedTrue) model model.to(DEVICE)QSetting QuantizationSettingFactory.default_setting() # ------------------------------------------------------------ # baking_parameter 将会在网络量化之后将网络中所有参数静态量化 # 参数静态量化将会显著提高 PPQ 的运行速度但是一旦参数被静态量化则其将无法被修改 # 也无法参与后续的训练过程 # ------------------------------------------------------------ QSetting.quantize_parameter_setting.baking_parameter Falsewith ENABLE_CUDA_KERNEL():quantized quantize_torch_model(modelmodel, calib_dataloaderCALIBRATION,calib_steps32, input_shapeINPUT_SHAPE,settingQSetting, collate_fncollate_fn, platformPLATFORM,onnx_export_file./model.onnx, deviceDEVICE, verbose0)# ------------------------------------------------------------# 让我们手动调用 AdaroundPass 优化过程# 这一过程需要训练更多步数同时你应当注意训练过程应该放在网络量化过程之后# 并且不允许使用 QSetting.quantize_parameter_setting.baking_parameter True# ------------------------------------------------------------from ppq.quantization.optim import AdaroundPass, ParameterBakingPassexecutor TorchExecutor(graphquantized, deviceDEVICE)AdaroundPass(steps5000).optimize(graphquantized, dataloaderCALIBRATION, executorexecutor, collate_fncollate_fn)ParameterBakingPass().optimize(graphquantized, dataloaderCALIBRATION, executorexecutor, collate_fncollate_fn)graphwise_error_analyse(graphquantized, running_deviceDEVICE, dataloaderCALIBRATION,collate_fncollate_fn)PPQ 提供基于 LSQ 的网络微调过程这是推荐的做法 将使用 Quant Setting 来调用微调过程并调整微调参数另一种 PPQ 中提供的优化方法 在 PPQ 0.6.5 之后我们将这部分扩展性的方法移出了 QuantizationSetting 现在扩展性方法需要手动调用 baking_parameter 将会在网络量化之后将网络中所有参数静态量化 参数静态量化将会显著提高 PPQ 的运行速度但是一旦参数被静态量化则其将无法被修改,也无法参与后续的训练过程
http://www.zqtcl.cn/news/773686/

相关文章:

  • 洛阳霞光做网站公司手机编程教学
  • 深圳正规网站建设公司顺德网页制作公司
  • 消防中队网站建设筑云电商网站建设公司
  • 天津网站建设天津中国东盟建设集团有限公司网站
  • 正版传奇手游官方网站宁波建设银行网站首页
  • 中铁建设集团招标网站wordpress区块编辑无法使用
  • 做电影网站需要的服务器配置网站关键词排名优化应该怎么做
  • 企业网站管理关键词你们懂的
  • 成都成华网站建设跟网站开发公司签合同主要要点
  • 手机搭建平台网站化工厂建设网站
  • 怎样建设自己网站的后台龙港哪里有做百度网站的
  • 西安做网站建设哪家好2345网址导航电脑版下载
  • 做暧暧小视频网站十大职业资格培训机构
  • 泰安网站建设优化营销策划是做什么
  • 做网站百度排前位网页设计实训报告2000字
  • 网站建设的活动方案房地产销售渠道拓客方案
  • 哈尔滨网站提升排名版式设计图片
  • 我的专业网站建设策划书网站logo教程
  • 百度 网站 移动端win10系统之家官网
  • h5商城网站建站成都网站建设全平台
  • xuzhou公司网站制作有什么手机网站
  • 网站建设 培训深圳网站建设制作品牌公司
  • 网站到期怎么续费网站运营优化推广
  • 一站式装修的利弊上海建设厅焊工证查询网站
  • 济宁做网站公司找融合深圳招聘一般在哪个网站
  • 重庆建网站推广公司个人网站需要建站群吗
  • 深圳网站建设吗个人博客网站制作代码
  • 化妆品网站模板网络营销的网站分类有哪些
  • 广州网站建设程序员培训wordpress 微信 抓取
  • 毕设给学校做网站个人店铺logo