建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

张辉

发帖: 179粉丝: 103

发消息 + 关注

发表于2021年05月02日 16:59:19 45 2
直达本楼层的链接
楼主
显示全部楼层
[活动体验] 5月1.2.0版本体验——通过查看LeNet代码改了啥所得到的的。。。

1.版本号截图:

2.硬件平台和操作系统:

3、体验内容

既然张小白已经试了那么多次LeNet网络,那么就来通过比较一下r1.0和r1.2版本代码的区别,来看看到底r1.2做了哪些变化吧。。。


分别打开 https://gitee.com/mindspore/mindspore/tree/r1.0/model_zoo/official/cv/lenethttps://gitee.com/mindspore/mindspore/tree/r1.2/model_zoo/official/cv/lenet 

首先,从主页上来看,1.0版本首页是英文README.md  ,

而 1.2版本优先展示了 中文README_CN.md,当然, 英文README.md其实也在。

这说明,MindSpore对国内(中文)开发者的友善性更加友好。应该会吸引更多的国内小伙伴们加入MindSpore的阵营。

查看模型训练代码的主程序:train.py

1.2版比1.0版少引入一个ast库,而在稍后的参数设置中,也少使用了一个参数:dataset_sink_mode

这个参数的字面意思好像是数据集的下沉模式。

这个参数的含义在 https://bbs.huaweicloud.com/forum/forum.php?mod=redirect&goto=findpost&ptid=94465&pid=571184&fromuid=70062 这个帖子中,王南老师解释的比较细致,我们将其摘录过来:

dataset_sink_mode=True时,可以这样简单的理解:

Model中仅建立数据通道与执行网络之间的连接关系,不会直接将数据喂给网络。数据会通过数据通道(pipeline)下发到卡上,网络在卡上执行时会直接从对应的数据通道中获取数据。

在这种模式下,数据下发与网络执行可以并行,单个epoch的训练过程中host与device之间不会交互,因此能提升性能,也因此打屏以epoch递增。


dataset_sink_mode=False,没有使用数据下沉模式。这时候数据不会通过通道直接向Device下发,Model会将数据一个batch一个batch得取出,喂给网络。

在这种模式下,每个step结束,host都可以获取device上网络的执行结果,因此打屏以step递增

感觉还是一个比较好玩的东西,r1.2版本删除了这个参数,是否是出于MindSpore团队对LeNet网络简化实现,以便有利于初学者入门的考虑。当然,这点不得而知。

这个ast.literal_eval 类型一般用于 “判断需要计算的内容计算后是不是合法的python类型。”它是“对字符串进行类型转换时”建议采用的一种方法。( https://www.cnblogs.com/hyhyhy/articles/10225779.html ) 这种方式可以避免对系统进行不安全的访问。

参数读取部分从main方法之外移入了main方法之内,这点提高了一定的代码可读性,但是对代码执行没啥优化效果。。。

在1.2版本中,增加了对create_dataset后,对读取后的数据集的处理,避免程序未读到数据集还继续处理造成的尴尬(和未知)

 if ds_train.get_dataset_size() == 0:
        raise ValueError("Please check dataset size > 0 and batch_size <= dataset size")

这点提高了代码的健壮性。

后续的代码几乎一模一样,只是因为1.2版本没有获得dataset_sink_mode,自然就不需要在model.train的调用中增加data_sink_mode这个参数了。

举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

张辉

发帖: 179粉丝: 103

发消息 + 关注

发表于2021年05月02日 17:14:59
直达本楼层的链接
沙发
显示全部楼层

src目录下三个py代码,其中 config.py和dataset.py几乎一模一样。

lenet.py构建LeNet网络的代码略有区别:

在1.0版本的代码中,__init__()和 construct()的过程都是一路向西,直接到底,而在1.2版本中,增加了对include_top的处理。这部分应该也是提高了系统的健壮性。

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

张辉

发帖: 179粉丝: 103

发消息 + 关注

更新于2021年05月02日 17:29:11
直达本楼层的链接
板凳
显示全部楼层

仅仅从LeNet网络的代码优化即可得知,MindSpore的优化升级,确实无处不在。。

让我们祝愿MindSpore越来越好!


4、个人邮箱号

zhanghui_china2020@163.com

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200