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

河口区建设工程招标网站支付公司网站建设费账务处理

河口区建设工程招标网站,支付公司网站建设费账务处理,现在推广平台哪家最好,大学部门宣传视频创意文章目录 1. 模型训练过程划分1.1. 定义过程1.1.1. 全局参数设置1.1.2. 模型定义 1.2. 数据集加载过程1.2.1. Dataset类#xff1a;创建数据集1.2.2. Dataloader类#xff1a;加载数据集 1.3. 训练循环 2. 模型训练过程优化的总体思路2.1. 提升数据从硬盘转移到CPU内存的效率… 文章目录 1. 模型训练过程划分1.1. 定义过程1.1.1. 全局参数设置1.1.2. 模型定义 1.2. 数据集加载过程1.2.1. Dataset类创建数据集1.2.2. Dataloader类加载数据集 1.3. 训练循环 2. 模型训练过程优化的总体思路2.1. 提升数据从硬盘转移到CPU内存的效率2.2. 提升CPU的运算效率2.3. 提升数据从CPU转移到GPU的效率2.4. 提升GPU的运算效率 3. 模型训练过程优化分析3.1. 定义过程3.2. 数据集加载过程3.3. 训练循环3.3.1. 训练模型3.3.2. 评估模型 1. 模型训练过程划分 主过程在__main__下。 if __name__ __main__:...主过程分为定义过程、数据集配置过程和训练循环。 1.1. 定义过程 1.1.1. 全局参数设置 参数名作用num_epochs指定在训练集上训练的轮数batch_size指定每批数据的样本数num_workers指定加载数据集的进程数prefetch_factor指定每个进程的预加载因子要求num_workers0device指定模型训练使用的设备CPU或GPUlr学习率控制模型参数的更新步长 1.1.2. 模型定义 组件作用writer定义tensorboard的事件记录器net定义神经网络结构net.apply(init_weights)模型参数初始化criterion定义损失函数optimizer定义优化器 1.2. 数据集加载过程 1.2.1. Dataset类创建数据集 作用定义数据集的结构和访问数据集中样本的方式。定义过程中通常需要读取数据文件但这并不意味着将整个数据集加载到内存中。如何创建数据集 继承Dataset抽象类自定义数据集TensorDataset类通过包装张量创建数据集 1.2.2. Dataloader类加载数据集 作用定义数据集的加载方式但这并不意味着正在加载数据集。 数据批量加载将数据集分成多个批次batches并逐批次地加载数据。数据打乱可选在每个训练周期epoch开始时DataLoader会对数据集进行随机打乱以确保在训练过程中每个样本被均匀地使用。 主要参数 参数作用dataset指定数据集batch_size指定每批数据的样本数shuffleFalse指定是否在每个训练周期epoch开始时进行数据打乱samplerNone指定如何从数据集中选择样本如果指定这个参数那么shuffle必须设置为Falsebatch_samplerNone指定生成每个批次中应包含的样本数据的索引。与batch_size、shuffle 、sampler and drop_last参数不兼容num_workers0指定进行数据加载的进程数collate_fnNone指定将一列表的样本合成mini-batch的方法用于映射型数据集pin_memoryFalse是否将数据缓存在物理RAM中以提高GPU传输效率drop_lastFalse是否在批次结束时丢弃剩余的样本当样本数量不是批次大小的整数倍时timeout0定义在每个批次上等待可用数据的最大秒数。如果超过这个时间还没有数据可用则抛出一个异常。默认值为0表示永不超时。worker_init_fnNone指定在每个工作进程启动时进行的初始化操作。可以用于设置共享的随机种子或其他全局状态。multiprocessing_contextNone指定多进程数据加载的上下文环境即多进程库generatorNone指定一个生成器对象来生成数据批次prefetch_factor2控制数据加载器预取数据的数量默认预取比实际所需的批次数量多2倍的数据persistent_workersFalse控制数据加载器的工作进程是否在数据加载完成后继续存在 1.3. 训练循环 外层循环控制在训练集上训练的轮数 for epoch in trange(num_epochs):...循环内部主要有以下模块 训练模型 for X, y in dataloader_train:X, y X.to(device), y.to(device)loss criterion(net(X), y)optimizer.zero_grad()loss.mean().backward()optimizer.step()评估模型 每轮训练后在数据集上损失 每轮训练损失每轮测试损失 def evaluate_loss(dataloader):评估给定数据集上模型的损失metric d2l.Accumulator(2) # 损失的总和, 样本数量with torch.no_grad():for X, y in dataloader:X, y X.to(device), y.to(device)loss criterion(net(X), y)metric.add(loss.sum(), loss.numel())return metric[0] / metric[1]2. 模型训练过程优化的总体思路 注意 以下只区分变量、对象是在GPU还是在CPU内存中处理。实际处理过程使用的硬件是CPU、内存和GPU其中CPU有缓存cacheGPU有显存。忽略具体的数据传输路径和数据处理设备。谈GPU包括GPU和显存谈CPU内存包括CPU、缓存cache和内存。 主过程子过程追踪情况定义过程全局参数设置变量的定义都是由CPU完成的模型定义 对象的定义都是由CPU完成的模型参数和梯度信息可以转移到GPU 数据集配置过程——对象的定义都是由CPU完成的训练循环训练模型 每批数据的加载是由CPU完成的先加载到CPU内存然后可以转移到GPU数据的前向传播可以由GPU完成误差反向传播包括梯度计算可以由GPU完成的模型参数更新可以由GPU完成的 评估模型 每批数据的加载是由CPU完成的先加载到CPU内存然后可以转移到GPU数据的前向传播可以由GPU完成此时可以禁用自动求导机制 由此要提升硬件资源的利用率和训练效率总体上有以下角度 2.1. 提升数据从硬盘转移到CPU内存的效率 如果数据集较小可以一次性读入CPU内存之后注意要将num_workers设置为0由主进程加载数据集。否则会增加多余的过程数据从CPU内存到CPU内存而且随进程数num_workers增加而增加。如果数据集很大可以采用多进程读取num_workers设置为大于0的数小于CPU内核数加载数据集的效率随着进程数num_workers增加而增加也随着预读取因子prefetch_factor的增加而增加之后大致不变因为预读取到了极限。如果数据集较小但是需要逐元素的预处理可以采用多进程读取以稍微增加训练时间为代价降低操作的复杂度。 2.2. 提升CPU的运算效率 2.3. 提升数据从CPU转移到GPU的效率 数据传输未准备好也传输即非阻塞模式non_blockingTrue将张量固定在CPU内存 pin_memoryTrue 2.4. 提升GPU的运算效率 使用自动混合精度AMP要求pytorch1.6.0通过将模型和数据转换为低精度的形式如FP16可以显著减少GPU内存使用。 3. 模型训练过程优化分析 3.1. 定义过程 特点每次程序运行只需要进行一次。优化思路将模型转移到GPU同时non_blockingTrue。 3.2. 数据集加载过程 特点只是定义数据加载的方式并没有加载数据。优化思路合理设置数据加载参数如 batch_size一般取能被训练集大小整除的值。过小则每次参数更新时所用的样本数较少模型无法充分地学习数据的特征和分布同时参数更新频繁模型收敛速度提高CPU到GPU的数据传输次数增加CPU内存的消耗总量增加过大则每次参数更新时所用的样本数较多模型性能更稳定对GPU、CPU内存的单次消耗增加对硬件配置要求更高同时参数更新缓慢模型收敛速度下降。num_workers取小于CPU内核数的合适值比如先取CPU内核数的一半。过小则数据加载进程少数据加载缓慢过大则数据加载进程多对CPU要求高同时也影响效率。pin_memory当设置为True时它告诉DataLoader将加载的数据张量固定在CPU内存中使数据传输到GPU的过程更快。prefetch_factor决定每次从磁盘加载多少个batch的数据到内存中预先加载batch越多在处理数据时不会因为数据加载的延迟而影响整体的训练速度同时可以让GPU在处理数据时保持忙碌从而提高GPU利用率过大则会导致CPU内存消耗增加。 3.3. 训练循环 优化思路 训练和评估过程分离或者减少评估的次数模型从训练到评估需要进行状态切换模型评估过程开销很大。尽量使用非局部变量减少变量、对象的创建和销毁过程 3.3.1. 训练模型 特点训练结构固定优化思路 将数据转移到GPU同时non_blockingTrue。优化训练结构比如使用自动混合精度 from torch.cuda.amp import autocast, GradScalergrad_scaler GradScaler() for epoch in range(num_epochs):start_time time.perf_counter()for X, y in dataloader_train:X, y X.to(device, non_blockingTrue), y.to(device, non_blockingTrue)with autocast():loss criterion(net(X), y)optimizer.zero_grad()grad_scaler.scale(loss.mean()).backward()grad_scaler.step(optimizer)grad_scaler.update()3.3.2. 评估模型 特点评估结构固定优化思路 将数据转移到GPU同时non_blockingTrue。减少不必要的运算比如梯度计算即 with torch.no_grad():...
http://wiki.neutronadmin.com/news/433041/

相关文章:

  • 网站设计要求有哪些系统优化大师免费版
  • 网站开发qq头像房地产项目网站建设方案
  • 上海网站制作开发wordpress 页面调用标签
  • 网站建设图片滑动代码网页设计教程文字与图片
  • 建设局网站查勘表是什么公司建网站多少钱合适
  • 下载网站站开发新型建筑模板样品图片
  • 网站设计经典案例欣赏style wordpress 主题
  • 做网站 程序员 暴富湖南省建设厅领导分工
  • 招聘网站竞品分析怎么做网站建设维护单选题
  • 如何做淘宝网网站域名wordpress默认排序
  • 如何在木上做网站如何创建自己的网站平台免费
  • 网站建设app端企业网页制作公司
  • 网站运营面试问题wordpress伪静态 宝塔
  • 网站 自助建站外贸 网站外链交换
  • 阿里云 全国网站建设网站建设与管理大作业总结
  • 做响应式的网站有哪些wordpress gzip 插件
  • 如何用文件传输协议登陆网站网站开发维护入哪个科目
  • 取名网站排名企业诚信建设网站
  • 合肥大型网站开发公司网站页面优化方法有哪些
  • 网站建设企业宣传册宣传片制作协议
  • 网站建设应该考虑哪些问题百度高搜
  • 国内网站建设联系电话wordpress 屏蔽中文浏览器
  • 帮助做APP的网站公司网站建设白云
  • 网站建设营销攻略wordpress插件合集
  • 遵义网站建设网帮你wp rocket wordpress
  • 爱润妍网站开发做新闻源网站采集站赚钱
  • 怎么做一个商城网站成都景观设计公司
  • 怎样一个域名做两个网站php做网站python做什么
  • 网站搭建公司加盟服务好的高端网站建设企业
  • 做网站公司那家好wordpress gae