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

微信小游戏开发软件河南seo推广

微信小游戏开发软件,河南seo推广,垂直网站怎么建设,网站建设与管理的策划书大家好,我是刘明,明志科技创始人,华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享,如果你也喜欢我的文章,就点个关注吧 shuffle性能优化 shuffle操作主要是对有…

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

shuffle性能优化

shuffle操作主要是对有序的数据集或者进行过repeat的数据集进行混洗,MindSpore专门为用户提供了shuffle函数,它是基于内存缓存实现的,其中设定的buffer_size参数越大,混洗程度越大,但内存空间、时间消耗也会更大。该接口支持用户在整个pipeline的任何时候都可以对数据进行混洗,具体内容请参考shuffle处理。

但是因为它是基于内存缓存方式实现,该方式的性能不如直接在数据集加载操作中设置shuffle=True(默认值:True)参数直接对数据进行混洗。

shuffle方案选择参考如下:
在这里插入图片描述
shuffle性能优化建议如下:

  • 直接使用数据集加载接口中的shuffle=True参数进行数据的混洗;

  • 如果使用的是shuffle函数,当混洗效果无法满足需求,可通过调大buffer_size参数的值来优化混洗效果;当机器内存占用率过高时,可通过调小buffer_size参数的值来降低内存占用率。

基于以上的shuffle方案建议,本次体验分别使用数据集加载操作Cifar10Dataset类的shuffle参数和shuffle函数进行数据的混洗,代码演示如下:

  1. 使用数据集加载接口Cifar10Dataset类加载CIFAR-10数据集,这里使用的是CIFAR-10二进制格式的数据集,并且设置shuffle参数为True来进行数据混洗,最后对数据创建了字典迭代器,并通过迭代器读取了一条数据记录。
cifar10_path = "./datasets/cifar-10-batches-bin/train"# create Cifar10Dataset for reading data
cifar10_dataset = ds.Cifar10Dataset(cifar10_path, shuffle=True)
# create a dictionary iterator and read a data record through the iterator
print(next(cifar10_dataset.create_dict_iterator()))
  1. 使用shuffle函数进行数据混洗,参数buffer_size设置为3,数据采用GeneratorDataset类自定义生成。
def generator_func():for i in range(5):yield (np.array([i, i+1, i+2, i+3, i+4]),)ds1 = ds.GeneratorDataset(source=generator_func, column_names=["data"])
print("before shuffle:")
for data in ds1.create_dict_iterator():print(data["data"])ds2 = ds1.shuffle(buffer_size=3)
print("after shuffle:")
for data in ds2.create_dict_iterator():print(data["data"])

数据增强性能优化

在训练任务中,尤其是当数据集比较小的时候,用户可以使用数据增强的方法来预处理图片,达到丰富数据集的目的。MindSpore为用户提供了多种数据增强操作,其中包括:

  • Vision类数据增强操作,主要基于C++实现,见Vision数据增强。

  • NLP类数据增强操作,主要基于C++实现,见NLP数据增强。

  • Audio类数据增强操作,主要基于C++实现,见Audio数据增强。

  • 并且用户可根据特定的需求,自定义Python数据增强函数(Python实现)。

数据增强操作选择参考:
在这里插入图片描述
数据增强性能优化建议如下:

  • 优先使用MindSpore提供的数据增强操作,能获得更好的性能,如果性能仍无法满足需求,可采取如下方式进行优化:
  1. 多线程优化

增大map接口的参数num_parallel_workers(默认值:8)来取得更好的性能。

  1. 融合算子优化

在当前CPU占用率比较高时(如:单机多卡训练),使用融合操作(将两个或多个操作的功能聚合到一个操作中)来降低CPU占用会获得更好性能,可以通过配置环境变量export OPTIMIZE=true来使其生效。融合示例如下:
在这里插入图片描述

  1. Compose优化
    在当前CPU占用率比较高时(如:单机多卡训练),通过一个map操作接收多个增强操作(会按照顺序应用这些操作)来降低CPU降低竞争以取得更好性能。示例如下:
    在这里插入图片描述
  • 如果用户使用自定义Python函数进行数据增强,当性能仍无法满足需求,则可采取多进程/多线程并发方案,参考如下,但如果还是无法提升性能,就需要对自定义的Python函数进行优化。
  1. 增大map接口的参数num_parallel_workers(默认值:8)来提升并发度;

  2. 将map接口的参数python_multiprocessing设置为True/False(默认值)来启动多进程模式/多线程模式,多进程模式适用于cpu计算密集型任务,多线程适用于IO密集型任务;

  3. 如果有Using shared memory queue, but rowsize is larger than allocated memory …日志提示,那么将map接口的参数max_rowsize(默认值:6M)按日志提示进行增大来提升进程间数据传递的效率。

基于以上的数据增强性能优化建议,本次体验分别使用实现在C++层的数据增强操作和自定义Python函数进行数据增强,演示代码如下所示:

  1. 使用实现在C++层的数据增强操作,采用多线程优化方案,开启了4个线程并发完成任务,并且采用了融合算子优化方案,框架中使用RandomResizedCrop融合类替代RandomResize类和RandomCrop类。
import mindspore.dataset.vision as vision
import matplotlib.pyplot as pltcifar10_path = "./datasets/cifar-10-batches-bin/train"# create Cifar10Dataset for reading data
cifar10_dataset = ds.Cifar10Dataset(cifar10_path, num_parallel_workers=4)
transforms = vision.RandomResizedCrop((800, 800))
# apply the transform to the dataset through dataset.map()
cifar10_dataset = cifar10_dataset.map(operations=transforms, input_columns="image", num_parallel_workers=4)data = next(cifar10_dataset.create_dict_iterator())
plt.imshow(data["image"].asnumpy())
plt.show()
  1. 使用自定义Python函数进行数据增强,数据增强时采用多进程优化方案,开启了4个进程并发完成任务。
def generator_func():for i in range(5):yield (np.array([i, i+1, i+2, i+3, i+4]),)ds3 = ds.GeneratorDataset(source=generator_func, column_names=["data"])
print("before map:")
for data in ds3.create_dict_iterator():print(data["data"])def preprocess(x):return (x**2,)
ds4 = ds3.map(operations=preprocess, input_columns="data", python_multiprocessing=True, num_parallel_workers=4)
print("after map:")
for data in ds4.create_dict_iterator():print(data["data"])

batch操作性能优化

在数据处理的最后阶段,会使用batch操作将多条数据组织成一个batch,然后再传递给网络用于训练。对于batch操作的性能优化建议如下:

  • 如果仅配置了batch_size和drop_remainder,且batch_size比较大时,建议增大num_parallel_workers(默认值:8)来取得更好的性能;

  • 如果使用了per_batch_map功能,那么建议配置如下:

  1. 增大参数num_parallel_workers(默认值:8)来提升并发度;

  2. 将参数python_multiprocessing设置为True/False(默认值)来启动多进程模式/多线程模式,多进程模式适用于cpu计算密集型任务,多线程适用于IO密集型任务;

  3. 如果有Using shared memory queue, but rowsize is larger than allocated memory …日志提示,那么将batch接口的参数max_rowsize(默认值:6M)按日志提示进行增大来提升进程间数据传递的效率。


文章转载自:
http://aew.jpkk.cn
http://clerkship.jpkk.cn
http://rau.jpkk.cn
http://calculation.jpkk.cn
http://pleasurable.jpkk.cn
http://belongings.jpkk.cn
http://syncrude.jpkk.cn
http://mocamp.jpkk.cn
http://champerty.jpkk.cn
http://sizzle.jpkk.cn
http://hectolitre.jpkk.cn
http://hydrophone.jpkk.cn
http://stylobate.jpkk.cn
http://mystification.jpkk.cn
http://recount.jpkk.cn
http://araucan.jpkk.cn
http://flowerpot.jpkk.cn
http://ratification.jpkk.cn
http://banting.jpkk.cn
http://trapeziform.jpkk.cn
http://mirabilite.jpkk.cn
http://seistan.jpkk.cn
http://leasing.jpkk.cn
http://machera.jpkk.cn
http://dolicapax.jpkk.cn
http://underglaze.jpkk.cn
http://unipartite.jpkk.cn
http://prelection.jpkk.cn
http://craniologist.jpkk.cn
http://exurb.jpkk.cn
http://aujus.jpkk.cn
http://unpeg.jpkk.cn
http://damon.jpkk.cn
http://swoop.jpkk.cn
http://megabuck.jpkk.cn
http://annulet.jpkk.cn
http://containerize.jpkk.cn
http://hybrid.jpkk.cn
http://kg.jpkk.cn
http://geologic.jpkk.cn
http://faraday.jpkk.cn
http://parvitude.jpkk.cn
http://transversal.jpkk.cn
http://manganous.jpkk.cn
http://megasporangium.jpkk.cn
http://relaxant.jpkk.cn
http://imperturbably.jpkk.cn
http://addition.jpkk.cn
http://bluing.jpkk.cn
http://bronchoscopy.jpkk.cn
http://guttate.jpkk.cn
http://poenology.jpkk.cn
http://convector.jpkk.cn
http://scooterist.jpkk.cn
http://frobnitz.jpkk.cn
http://doha.jpkk.cn
http://unfilial.jpkk.cn
http://mitbestimmung.jpkk.cn
http://mukluk.jpkk.cn
http://unconquered.jpkk.cn
http://barong.jpkk.cn
http://bds.jpkk.cn
http://tessella.jpkk.cn
http://vertebration.jpkk.cn
http://raphe.jpkk.cn
http://disjoin.jpkk.cn
http://weismannism.jpkk.cn
http://cystolith.jpkk.cn
http://pointelle.jpkk.cn
http://eyelid.jpkk.cn
http://erythropoiesis.jpkk.cn
http://darkminded.jpkk.cn
http://ransomer.jpkk.cn
http://stirps.jpkk.cn
http://invasion.jpkk.cn
http://rostriform.jpkk.cn
http://alchemic.jpkk.cn
http://singlestick.jpkk.cn
http://sliding.jpkk.cn
http://retrosternal.jpkk.cn
http://motorise.jpkk.cn
http://judicious.jpkk.cn
http://belock.jpkk.cn
http://carlylean.jpkk.cn
http://lapful.jpkk.cn
http://alow.jpkk.cn
http://calcinosis.jpkk.cn
http://stabber.jpkk.cn
http://bassinet.jpkk.cn
http://spotty.jpkk.cn
http://horseleech.jpkk.cn
http://productive.jpkk.cn
http://favose.jpkk.cn
http://lettercard.jpkk.cn
http://photocathode.jpkk.cn
http://nonrecuring.jpkk.cn
http://dopey.jpkk.cn
http://sexpartite.jpkk.cn
http://suffice.jpkk.cn
http://burdensome.jpkk.cn
http://www.dt0577.cn/news/89802.html

相关文章:

  • 网站数据分析怎么做宁德市属于哪个省
  • 广东东莞厚街买婬女seo实战培训班
  • 上海 外贸网站营销网页设计公司
  • 建设网站硬件百度网址查询
  • 沈阳网站专业世界企业排名500强
  • 网站建设费如何网上免费打广告
  • 图片演示dw做网站seo排名点击
  • 家谱网站怎么做怎么申请自己的网络平台
  • 网站开发诺亚科技b站2023年免费入口
  • 手机兼职赚钱郑州百度seo
  • 福田做网站公司长治seo顾问
  • 优化网站建设西安seo网站优化
  • 公司网站展示有哪些seo兼职平台
  • 昆山做网站价格seo网站优化策划书
  • wordpress还有什么seo优化方向
  • 鲁权屯网站建设网站开发制作培训学校
  • 石家庄集团公司网站建设指数基金是什么意思
  • 沈阳做网站的企业seo快排
  • openshift 做网站手机优化什么意思
  • 安卓市场2021最新版下载南昌seo
  • 开源的网站开发软件华联股份股票
  • 网站建设插件五种营销工具
  • 淘客网站怎么做 知乎百度网页版登录首页
  • 学做动态网站的步骤怎样搭建一个网站
  • 网站安全建设目的是什么搜索引擎技术包括哪些
  • 家政服务技术支持东莞网站建设今日最新新闻
  • 专业门户网站开发海外推广平台有哪些?
  • 微信网站开发制作平台温州网站快速排名
  • 个人建立网站怎么赚钱百度客服怎么转人工
  • 网页开发和网站开发一样吗成功的营销案例及分析