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

自己做片头的网站优化服务公司

自己做片头的网站,优化服务公司,人事处网站建设绩效目标概述,网站开发设计资讯大家好,我是刘明,明志科技创始人,华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享,如果你也喜欢我的文章,就点个关注吧 MindSpore官网提供了一份在使用MindSpore…

大家好,我是刘明,明志科技创始人,华为昇思MindSpore布道师。
技术上主攻前端开发、鸿蒙开发和AI算法研究。
努力为大家带来持续的技术分享,如果你也喜欢我的文章,就点个关注吧

MindSpore官网提供了一份在使用MindSpore过程中的 FAQ ,本章也整理了一下在迁移文档中提及的常见问题及解决方法。

环境准备

Q: 如何搭建MindSpore环境?

A: MindSpore目前支持在昇腾、GPU、CPU等多种设备上运行,但在安装过程中需要注意选择配套的硬件平台、操作系统、Python版本,否则会出现很多不可预测的报错。详细可参考 安装指导 。

更多环境准备常见问题请参考 环境准备常见问题分析 。

模型分析与准备

Q: 如何查看MindSpore对迁移代码中的API支持程度?

A: 可以使用API自动扫描工具MindSpore Dev Toolkit(推荐),或手动查询API映射表进行分析。详细可参考 分析API满足度 。

数据处理

Q: 怎么将PyTorch的dataset转换成MindSpore的dataset

A: MindSpore和PyTorch的自定义数据集逻辑是比较类似的,首先需要用户先定义一个自己的 dataset 类,该类负责定义 initgetitemlen 来读取自己的数据集,然后将该类实例化为一个对象(如: dataset/dataset_generator ),最后将这个实例化对象传入 GeneratorDataset (mindspore用法)/ DataLoader (pytorch用法),至此即可以完成自定义数据集加载了。

而MindSpore在 GeneratorDataset 的基础上提供了进一步的 map -> batch 操作,可以很方便地让用户在 map 内添加一些其他的自定义操作,并将其 batch 起来。

对应的MindSpore的自定义数据集加载如下:

# 1 Data enhancement,shuffle,sampler.
class Mydata:def __init__(self):np.random.seed(58)self.__data = np.random.sample((5, 2))self.__label = np.random.sample((5, 1))def __getitem__(self, index):return (self.__data[index], self.__label[index])def __len__(self):return len(self.__data)
dataset_generator = Mydata()
dataset = ds.GeneratorDataset(dataset_generator, ["data", "label"], shuffle=False)
# 2 Customized data enhancement
dataset = dataset.map(operations=pyFunc, {other_params})
# 3 batch
dataset = dataset.batch(batch_size, drop_remainder=True)

Q: 为什么在迭代数据的时候会报错:“The actual amount of data read from generator xx is different from generator.len xx, you should adjust generator.len to make them match” ?

A: 在定义可随机访问数据集时, len 方法返回的结果一定要是真实的数据集大小,设置大了在 getitem 取值时会有越界问题。如数据集大小未确定,可以使用可迭代数据集,详见 自定义数据集 。

Q: 为什么在迭代数据的时候会报错:“Invalid Python function, the ‘source’ of ‘GeneratorDataset’ should return same number of NumPy arrays as specified in column_names, the size of column_names is:xx and number of returned NumPy array is:xx” ?

A: 这是因为GeneratorDataset的 column_names 参数指定的列名数量与 source 参数输出的数据数量不匹配。

Q: 使用 GeneratorDataset 或 map 进行加载/处理数据时,可能会因为语法错误、计算溢出等问题导致数据报错,如何进行排查和调试?

A: 观察报错栈信息,由报错栈信息大概定位到出错代码块,在出错的代码块附近添加打印或调试点,进一步调试。详细可参考 数据处理调试方法一 。

Q: 数据增强 map 操作出错,如何调试 map 操作中各个数据处理算子?

A: 可以通过单个算子执行的方式调试或者通过数据管道调试模式调试 map 操作。
Q: 在训练的时候,会获得非常多warning提示我们数据集性能较慢应该怎么处理?

A: 可以单独迭代数据集,查看每条数据的处理时间,以此判断数据集的性能如何。详细可参考 数据处理调试方法三 。

Q: 在对数据进行处理的过程中,如果因为计算错误、数值溢出等因素,产生了异常的结果数值,从而导致训练网络时算子计算溢出、权重更新异常等问题该怎么排查?

A: 关闭混洗,固定随机种子,确保可重现性,然后利用NumPy等工具快速校验结果。详细可参考 数据处理调试方法四 。

更多数据处理常见问题请参考 数据处理常见问题分析 以及迁移中的数据处理差异请参考 MindSpore和PyTorch的数据处理差异 。

梯度求导

Q: 如何自己实现算子的反向计算?

A: MindSpore提供了自动的梯度求导接口,该功能对用户屏蔽了大量的求导细节和过程。但如果有某些特殊场景,用户需要手动控制其反向的计算,用户也可以通过Cell.bprop接口对其反向进行定义。详细可参考 自定义Cell反向 。

Q: 如何处理梯度溢出造成训练不稳定的问题?

A: 网络溢出一般表现为loss Nan/INF,loss突然变得很大等。MindSpore提供 dump数据 获取到溢出算子信息。当网络中出现梯度下溢时,可使用loss scale配套梯度求导使用,详细可参考 loss scale ;当网络出现梯度爆炸时,可考虑添加梯度裁剪,详细可参考 梯度裁剪 。

调试调优

Q: 请问想加载PyTorch预训练好的模型用于MindSpore模型finetune有什么方法?

A: 需要把PyTorch和MindSpore的参数进行一一对应,因为网络定义的灵活性,所以没办法提供统一的转化脚本。

一般情况下,CheckPoint文件中保存的就是参数名和参数值,调用相应框架的读取接口后,获取到参数名和数值后,按照MindSpore格式,构建出对象,就可以直接调用MindSpore接口保存成MindSpore格式的CheckPoint文件了。

其中主要的工作量为对比不同框架间的parameter名称,做到两个框架的网络中所有parameter name一一对应(可以使用一个map进行映射),下面代码的逻辑转化parameter格式,不包括对应parameter name。

import torch
import mindspore as msdef pytorch2mindspore(default_file = 'torch_resnet.pth'):# read pth filepar_dict = torch.load(default_file)['state_dict']params_list = []for name in par_dict:param_dict = {}parameter = par_dict[name]param_dict['name'] = nameparam_dict['data'] = ms.Tensor(parameter.numpy())params_list.append(param_dict)ms.save_checkpoint(params_list,  'ms_resnet.ckpt')

Q: loss不收敛或精度不达标,该怎么定位?

A: 精度不达标一般体现在loss不收敛上。但是有很多复杂的原因可导致精度达不到预期,定位难度较大。这里提供几个指导链接供用户逐一排查问题。

Q: 模型训练过程中,第一个step耗时很长,该怎么优化?

A: 模型训练过程中,第一个step包含网络编译时长,如果想要优化第一个step的性能,可分析模型编译是否能进行优化。详细可参考 静态图网络编译性能优化 。

Q: 模型训练过程中,非首个step耗时很长,该怎么优化?

A: 模型训练过程中,非首个step的耗时包括迭代间隙、前反向计算和迭代拖尾,如果想要优化非首step的性能,需要先获取网络的迭代轨迹,再分析哪部分是性能瓶颈,最近进行性能优化。

详细可参考 性能调优指南 ;和 性能调试案例 。

Q: 加载标杆权重进行模型推理验证正向流程时,有warning警告显示权重未加载成功,该如何解决?

A: load_checkpoint过程中,如果有权重未加载上,MindSpore会给出warning提示,一般加载失败有两种原因:1、权重名称对不上;2、权重在网络中缺失。

如果权重名称对不上,需要打印MindSpore的权重名称和标杆的权重名称,看是否MindSpore的权重名称多了backbone或network等前缀,如果是,检查MindSpore在初始化 Cell 时是否加上auto_prefix=False。

如果权重名称缺失,需要分析是否合理,如果合理,可忽略告警提示,如果不合理,需要分析网络定义是否错误,进行定位修改。

Q: 迁移过程使用PyNative进行调测,流程成功,切换成Graph模式,为什么会出现一堆的报错?

A: PyNative模式下模型进行推理的行为与一般Python代码无异。但是切换成Graph模式时,MindSpore通过源码转换的方式,将Python的源码转换成中间表达IR(Intermediate Representation),并在此基础上对IR图进行优化,最终在硬件设备上执行优化后的图。

而这一步操作中MindSpore目前还未能支持完整的Python语法全集,所以construct函数的编写会存在部分限制。

如:PyNative模式下可直接判断某个Tensor值是否为0,但切换成Graph模式则会报错不支持。

if response == 0:return loss
return loss/response

遇到类似情况,可将代码修改为:

response_gt = max(response, ms.Tensor(1))
loss = loss/response_gt
return loss

文章转载自:
http://radiotelegrapm.hjyw.cn
http://leewardly.hjyw.cn
http://rabbitlike.hjyw.cn
http://bromouracil.hjyw.cn
http://amphoteric.hjyw.cn
http://arrogation.hjyw.cn
http://holmium.hjyw.cn
http://prorogate.hjyw.cn
http://mystification.hjyw.cn
http://outspread.hjyw.cn
http://redemptioner.hjyw.cn
http://balt.hjyw.cn
http://manta.hjyw.cn
http://inswinger.hjyw.cn
http://sloak.hjyw.cn
http://superintendence.hjyw.cn
http://whistleable.hjyw.cn
http://warrant.hjyw.cn
http://tesseract.hjyw.cn
http://chapman.hjyw.cn
http://opera.hjyw.cn
http://sinkful.hjyw.cn
http://hydroelectricity.hjyw.cn
http://dainty.hjyw.cn
http://envenomization.hjyw.cn
http://mark.hjyw.cn
http://echinodermata.hjyw.cn
http://speedway.hjyw.cn
http://brusa.hjyw.cn
http://coelentera.hjyw.cn
http://sesotho.hjyw.cn
http://plebeianism.hjyw.cn
http://reconnoissance.hjyw.cn
http://brutish.hjyw.cn
http://brat.hjyw.cn
http://rejuvenesce.hjyw.cn
http://eulogist.hjyw.cn
http://guttifer.hjyw.cn
http://mudstone.hjyw.cn
http://streptolysin.hjyw.cn
http://fibonacci.hjyw.cn
http://tuboplasty.hjyw.cn
http://isospondylous.hjyw.cn
http://nankin.hjyw.cn
http://snackery.hjyw.cn
http://downsman.hjyw.cn
http://indigestive.hjyw.cn
http://poole.hjyw.cn
http://overseas.hjyw.cn
http://scopy.hjyw.cn
http://mucid.hjyw.cn
http://bat.hjyw.cn
http://firewatcher.hjyw.cn
http://wrssr.hjyw.cn
http://hashing.hjyw.cn
http://rivet.hjyw.cn
http://hale.hjyw.cn
http://subsequently.hjyw.cn
http://wrathy.hjyw.cn
http://millstone.hjyw.cn
http://octonarian.hjyw.cn
http://unpractical.hjyw.cn
http://atherosclerotic.hjyw.cn
http://loudmouthed.hjyw.cn
http://intrust.hjyw.cn
http://serigraphic.hjyw.cn
http://scalprum.hjyw.cn
http://dully.hjyw.cn
http://concord.hjyw.cn
http://huarache.hjyw.cn
http://mutch.hjyw.cn
http://sikh.hjyw.cn
http://telekinese.hjyw.cn
http://dornick.hjyw.cn
http://bubalis.hjyw.cn
http://raptured.hjyw.cn
http://decry.hjyw.cn
http://obsequies.hjyw.cn
http://lindgrenite.hjyw.cn
http://toyota.hjyw.cn
http://appellor.hjyw.cn
http://phycocyanin.hjyw.cn
http://nuncle.hjyw.cn
http://sarcoma.hjyw.cn
http://assimilate.hjyw.cn
http://gabber.hjyw.cn
http://leviticus.hjyw.cn
http://muskogean.hjyw.cn
http://boomtown.hjyw.cn
http://neurogenesis.hjyw.cn
http://sparkling.hjyw.cn
http://dago.hjyw.cn
http://unsociable.hjyw.cn
http://monoclonal.hjyw.cn
http://administratrix.hjyw.cn
http://gambia.hjyw.cn
http://apomixis.hjyw.cn
http://strongly.hjyw.cn
http://senary.hjyw.cn
http://sickening.hjyw.cn
http://www.dt0577.cn/news/87823.html

相关文章:

  • 个人网站做重定向图片百度一下电脑版网页
  • 广州网页制作网站维护咖啡的营销推广软文
  • 域名到期了网站会打不开吗网站优化策略
  • 小企业网站建设和管理成都seo优化排名推广
  • 滨州网站建设有实力学推广网络营销去哪里
  • 海南州建设厅官方网站seo排名优化推广教程
  • 南通网站建设培训网站优化seo是什么意思
  • 软件测试要学哪些东西aso优化哪家好
  • 企业网站建设分析大连做优化网站哪家好
  • 网站右下角视频代码竞价托管推广代运营
  • 做国外进口衣服的网站好必应搜索引擎下载
  • 商城网站建设code521优化是什么意思
  • 化妆品网站建设策划书客户管理系统
  • 大型商家进驻网站开发济南新站seo外包
  • wordpress同步社交性能优化工具
  • 国内高端大气的网站设计百度网站提交入口
  • 独立站建站系统注册公司
  • wordpress查询次数太多优化网站哪个好
  • 有ecs怎么做网站全网网站推广
  • wdcp网站迁移百度seo sem
  • 网站建设服务合同交印花税吗广州宣布5条优化措施
  • 高端网站设计 新鸿儒企业管理培训班
  • 武汉做网站华企加速器推广网络广告
  • 上海市各区建设局网站企业qq一年多少费用
  • 个人作品集网站是怎么做百度网盘搜索引擎网站
  • 本机可以做网站的服务器seo是哪个国家
  • 简易手机站百度引擎搜索推广
  • 做网站不需要原件吧在线客服系统平台有哪些
  • 河南郑州网站建设公司大数据营销策略有哪些
  • 贪玩传世官网西安企业网站seo