• [活动公告] 【星云闪耀1024预热活动】聆听太空之声:代码say hi
    >>点击跳转至活动首页<<活动奖励:在所有符合活动要求的参与者中,随机抽取15名开发者,奖励手机支架1个。 活动时间10月20日-11月14日 参与方式在本主题贴直接以:“#1024程序员节#+太空,你好!(用代码表达你想对太空说的话)”为规定格式进行回复,视为参与成功。活动规则1、禁止复制其他楼层内容或改编自其它楼层内容(包括本人发布在其他楼层的内容),如经发现,取消该用户获奖资格2、如开发者用户发布的内容经华为云社区工作人员认定为无效内容,亦取消该用户获奖资格 Tips:1、请务必使用个人账号参与活动(IAM、企业账号等账号参与无效)。2、所有获得华为电子产品奖项的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。3、 本次活动抽奖将采用巨公摇号平台(https://www.jugong.wang/random-portal/)如您对评奖方式有异议,请勿参加本次活动。其他预热活动
  • [获奖公告] 云市场用户有奖征文——“云端心声”第八期获奖公示(2021年9月1—9月30日)!
    ——说心声,赢大礼——“云端心声”第八期征稿获奖公告如下,恭喜获奖的小伙伴!!!评分细则(数据截止2021年9月30日24:00)投稿文章阅读量阅读量得分点赞量点赞量得分评论量评论量得分内容可读性得分汇总得分[云端心声-产品攻略] 微梦企业网站建设免费试用购买攻略4041000056[云端心声-产品攻略] 微梦企业网站建设免费试用H5企业版免费试用使用攻略1570000055[云端心声-产品攻略] 微梦企业网站建设免费试用H5营销版免费试用使用攻略1740000044[云端心声-产品攻略] 生鲜小程序解决方案免费试用购买攻略1150000033[云端心声-产品攻略] 生鲜小程序解决方案免费试用使用攻略1100000033*专家评分细则:(满分10分)内容丰富,可读性强文章阅读量≥300点赞量≥100评论量≥305分1分2分2分再次恭喜获奖伙伴!!获奖码豆将在公示后5个工作日内充值到账,请到会员中心的“查看明细”中查看到账情况实物礼品获奖用户请在10月12日(下周二)前私信版主并提供:姓名+邮箱+联系电话+邮寄地址我们将会在5个工作日内联系获奖者,并在公示后后15个工作日内统一发放奖品~*如有任何问题,可邮箱联系tianyun3@huawei.com进行沟通咨询,咨询时请备注:【云端心声活动】这么多,这么丰富的奖品,动动手指就能拿到!!心动吗?也想大展身手吗? 机会来了云端系列活动——“云端心声”第九期征稿开始啦~海量码豆&荣耀蓝牙耳机,投稿就能免费领~>>活动传送门<<(点此跳转)第九期投稿时间2021年10月1日——2021年10月31日,获奖名单公布时间:11月1日——11月7日时间有限,只要你有故事、有才华、乐于分享快来参与吧,大奖非你莫属!华为云码豆怎么用?会员中心入口:https://devcloud.huaweicloud.com/bonususer/home码豆奖励活动规则: 1)码豆可在码豆会员中心兑换实物礼品; 2)码豆奖励将于活动结束后的3个工作日内充值到账,请到会员中心的“查看明细”中查看到账情况; 3)码豆只能用于会员中心的礼品兑换,不得转让,具体规则请到会员中心阅读“码豆规则”; 4)为保证码豆成功发放,如果修改过账号名还请向工作人员提供修改前后的账号名。【华为云云市场,助您上云无忧】
  • [活动体验] 【初次见面,MindSpore v1.5】 活动一:1.5版本新特性相关的干货分享
    邮箱:chaojililin@163.com在1.5新特性中,完善控制流,支持多种控制语句混合编写,支持循环自动微分,但是在使用条件为变量的流程控制语句时,图编译生成的网络模型中会包含控制流算子,在此场景下,正向图会执行两次。如果此时正向图中存在Assign等副作用算子并在训练情况下会导致反向图计算结果不符合预期。 代码:from mindspore import opsfrom mindspore import Tensor, nnfrom mindspore import dtype as msfrom mindspore import contextfrom mindspore.ops import Parameterfrom mindspore import compositeimport numpy as npclass ForwardNet(nn.Cell):    def __init__(self):        super().__init__()        self.var = Parameter(Tensor(np.array(1), ms.int32))        self.assign = ops.Assign()    def construct(self, x, y):        if x < y:            tmp = self.var + 1            self.assign(self.var, tmp)        out = (self.var + 1) * x        out = out + 1        return outclass BackwardNet(nn.Cell):    def __init__(self, net):        super(BackwardNet, self).__init__(auto_prefix=False)        self.forward_net = net        self.grad = composite.GradOperation()    def construct(self, *inputs):        grads = self.grad(self.forward_net)(*inputs)        return gradsforward_net = ForwardNet()backward_net = BackwardNet(forward_net)x = Tensor(np.array(1), dtype=ms.int32)y = Tensor(np.array(2), dtype=ms.int32)output = backward_net(x, y)print("lixiang assign output:", output)运行结果:期望x的梯度为3,但是实际执行得到的梯度为4,原因是正向图执行了两次(tmp = self.var + 1和self.assign(self.var, tmp)被执行了两次)。如果想得到正确结果,代码需要修改如下:from mindspore import opsfrom mindspore import Tensor, nnfrom mindspore import dtype as msfrom mindspore import contextfrom mindspore.ops import Parameterfrom mindspore import compositeimport numpy as npclass ForwardNet1(nn.Cell):    def __init__(self):        super().__init__()        self.var = Parameter(Tensor(np.array(1), ms.int32))        self.assign = ops.Assign()    def construct(self, x, y):        tmp = self.var + 1        self.assign(self.var, tmp)        out = (self.var + 1) * x        out = out + 1        return outclass ForwardNet2(nn.Cell):    def __init__(self):        super().__init__()        self.var = Parameter(Tensor(np.array(1), ms.int32))        self.assign = ops.Assign()    def construct(self, x, y):        out = (self.var + 1) * x        out = out + 1        return outclass BackwardNet(nn.Cell):    def __init__(self, net):        super(BackwardNet, self).__init__(auto_prefix=False)        self.forward_net = net        self.grad = composite.GradOperation()    def construct(self, *inputs):        grads = self.grad(self.forward_net)(*inputs)        return gradsx = Tensor(np.array(1), dtype=ms.int32)y = Tensor(np.array(2), dtype=ms.int32)if x < y:    forward_net = ForwardNet1()else:    forward_net = ForwardNet2()backward_net = BackwardNet(forward_net)output = backward_net(x, y)print("lixiang assign output:", output)运行结果:
  • [热门活动] 【MSG·WIT北京线下活动】25号14:00关于前沿科技、经济和职场分享,期待你的到来!
    9月25日(周六)14:00 ,我们邀请了来自贝壳找房业务数据中心产品负责人 李清华、快手经济学家 金雅然、AI&区块链艺术家 宋婷、华为MindSpore运营总监 胡晓曼,四位老师分享她们对前沿科技和经济的认识,并分享她们对行业发展和女性在科技领域自身职业发展的见解。希望能呈现更多观点、更多干货的同时,更能从女性的角度出发,帮助职场女性突破职业瓶颈,鼓励在校大学生勇敢选择,引导和带动职场白领、超级妈妈跟上这个信息时代,并进行科技转型。不管你是60后、70后、80后,还是90后和00后,希望你都能找到属于各自的科技圈子!本次MSG·WIT将会首次宣布成立女性开发者小组,专门针对女性开发者,组建学习小组,小组每月会设定一定的开发目标,顺利完成的开发者将会获得MindSpore官方授予的优秀女性开发者荣誉,并在官网上轮播展示!除此之外还会有额外的惊喜大礼包! 1、什么是MSG·WIT? MSG·WIT(Women in Tech)项目是由MindSpore开源社区发起,旨在鼓励和促进每一位女性在职场中实现自己的价值,通过每一次的活动分享都能有收获和提升,结识志同道合的朋友,认识更好的自己! 2、活动时间和地点?是否收费? 时间:2021年9月25日 14:00~18:00地址:北京市东城区炒豆胡同9号巴巴新生活活动是全程免费的。我们还准备了茶歇和伴手礼(腰部按摩仪)给大家! 3、什么人可以参加? 线下分享参与者不限男女。报名后会根据大家填写的信息来筛选最终来的人员,所以如果在北京的同学想要来参加的话,要认真填写问卷噢。MSG·WIT女性开发者小组只限女生参加噢!因疫情影响,机会难得!线下分享只限20位小伙伴参加报名审核通过将会通过邮箱告知你噢~请留意邮箱信息!扫码报名噢!
  • [信息速递] 【中秋活动专题】【中奖名单公布】十五夜团圆,易猜灯谜云赏月
                  谜底:网络开放可编程,使能网络运维转型(AOC首页概述视频中)                                                                中奖信息(昵称)月宫寻宝•猜字谜花好月圆•积花赞yd_290702340关艳梅流氓兔不流氓萌man神slhhy园~yd_294831694beayd_264755157佛二aocfansQuiang青菜辣椒X Y上树打老虎袁宏Aliez韩淇袁宏chenzxyd_241927322was伟欢黄伟欢仰望星空的蜗牛我再想想呢徐十年树木渺小的尘埃问道瑜雪天儿王永楠白白胖胖糖备注:在伙伴群中有效请中奖的伙伴们在10月10日前通过社区或微信私信的方式,提供收件地址,礼品将于10月10日寄出,过期不候哦~【  AOC社区 】          AOC (Agile Open Container)集成了华为网络云化平台,以及从网络运维中抽象总结出的业务框架,以Yang模型为基础,提供了对网络的开放可编程能力。社区为大家提供了关于数通网络开放可编程一站式学习、体验、认证、交流的平台。以视频为载体构建了在线学习AOC的整个学习、认证体系。另外还提供了SDK、demo样例、以及API手册、开发指导等文档的下载,方便大家进行新项目的开发。【 智能云网社区 】         智能云网是华为专门为开发者打造的“学习、开发、验证、交流”一站式支持与服务平台,该平台承载了“云网络社区”、“云广域网络”、“数通网络开放可编程”、“超融合数据中心网络”以及“数通网络设备开放社区”等五大领域知识,并提供“开发者交流”、“API体验中心”、“多媒体课件”、“SDK工具包”、“开发者工具”和“远程实验室”等六大工具,让开发者们轻松在线完成开发。                                       
  • [热门活动] 【HC线上活动】原创作者征集活动 第一期——在线课程学习分享,赢京东卡大奖!
    活动已结束,获奖结果如下:中奖用户请于2021年9月30日前私信版主,格式“活动名称——接收京东卡密的联系方式(微信、qq)”;逾期反馈则默认放弃奖品,谢谢配合~华为云账号昵称获得奖励hw_008614740173172_01仙女本仙200京东卡maoning2019帅气的我200京东卡yizhanglwolfandy200京东卡nukinsannukinsan200京东卡kaliarchkaliarch200京东卡hwid_c7gbgw8wvl56bxs这个地方是昵称200京东卡hw02428460abcabc200京东卡ying1212ying1212200京东卡shao1112shao1112200京东卡tanboss3232tanboss3232200京东卡hw62056453hw62056453200京东卡yaoyao15yaoyao15200京东卡zhongpenglaiPenglaiZhong200京东卡lt_luj_1212LuJie_lt200京东卡hw999666hw999666200京东卡maoyibei毛桃200京东卡G-washingtonG-washington200京东卡【昇腾学院在线课程上新了!】小伙伴们,在哪里能学到最新最全的昇腾系列课程呢?这里隆重向大家介绍昇腾学院——在线课程版块,最近我们新上线了MindX、MindStudio的新课程,快来看看吧~HC期间,学习课程,学完写学习心得并分享发帖,就能参与昇腾系列活动——原创作者征集 第一期,赢作者积分,还能获得京东卡大奖哦~点击进入昇腾学院在线课程学习【参与方式&奖项设置】1、在9月9日-9月25日期间,登陆昇腾学院——在线课程,学习系列课程,学完后将学习心得分享在昇腾论坛另起一帖,在本帖下回复昇腾论坛的发帖链接即可;2、征文内容为课程学习心得,可与实际开发案例结合,字数800字以上,不得抄袭,符合要求奖励京东卡200元;每人仅可获奖一次;3、自9月25日起一个月,会对征文浏览量进行评比,浏览量前20的文章,再奖励京东卡300元;每人仅可获奖一次;4、被昇腾社区专家评为优质作品的文章作者,我们将列入优秀原创作者资源池,后续将获得原创作者系列活动更多定邀资格,获得更加丰厚的奖励。活动规则1)内容要求为投稿人原创,凡转载或抄袭一经发现将取消参赛资格;2)内容分享后,昇腾拥有该内容的使用权、修改权等;3)所有获得华为奖品的用户,请于获奖后3个工作日内完成实名认证,否则视为放弃奖励;4)本次活动的相关奖项将由昇腾社区体验专家进行评选,如符合优质作品的回复不足时,奖项可空缺;5)本次活动一个实名认证账号只能对应一个收件人,如同一账号填写多个不同收件人,不予发放奖励;6)中200元京东卡奖用户请于2021年9月30日前反馈收件人姓名、手机号以及地址;逾期反馈则默认放弃奖品,谢谢配合;7)200元京东卡预计于2021年10月10日前完成发放,300元京东卡预计于2021年11月10日前完成发放发放时间根据实际情况动态调整,如有延期敬请见谅;8)本次活动奖品最终解释权归主办方所有。
  • [活动体验] 活动一:1.5版本新特性体验
    本次体验新增特性:安装版本:按照介绍中的配置方法跑了一下ssd300,代码地址:https://gitee.com/mindspore/models/tree/master/official/cv/ssd发现配置后训练性能并无明显变化:boost_level="O0"  2~4 epoch性能:boost_level="O1" 2~4 epoch性能:boost_level="O2" 2~4 epoch性能:然后在models仓搜索了下,官方的resnet+imagenet配置了boost_level选项,决定再次尝试下:代码位于:https://gitee.com/mindspore/models/tree/master/official/cv/resnet多卡会有卡间通信影响,因此采用单卡训练5个epoch单独查看算子性能训练指令:python ../train.py  --data_path=ImageNet_Original/train --config_path=../config/resnet50_imagenet2012_config.yaml --output_path './output' --epoch_size 5boost_level="O0"  2~4 epoch性能:boost_level="O2"  2~4 epoch性能:性能确实有14.9%的收益!!然后添加profling通过mindinsight看了下算子的耗时:boost_level="O0"  boost_level="O2”从图上看部分算子,比如FusionOp_Conv2D_BNTrainingReduce等算子虽然耗时有增加,但是有些算子,比如MaxPoolGradWithArgmax在图上看不到了,猜测是融合策略把算子聚合了。ssd300本身就开了图算加速,所以加上boost_level 作用不太明显。很强大的功能,不过比对了resnet50_imagenet2012_Boost_config.yaml和resnet50_imagenet2012_config.yaml中的配置,参数配置差异较大,这个参数应该不能跟图算融合一样无差别的应用到网络中,期待更详细的官方配置和应用说明。
  • [活动体验] 活动一:1.5版本新特性体验
    1.5版本新特性——集群调试调优支持大规模分布式训练特性一集群迭代&通信性能分析体验网络训练脚本中声明profiler解析生成的profiler数据在生成的文件夹下运行mindinsight可以看到以集群视角展示本次训练性能数据。集群训练性能包括集群迭代轨迹分析、集群通信性能分析。邮箱:2320116850@qq.com
  • [活动体验] 活动一:1.5版本新特性体验
    一、基础环境硬件平台:CPU操作系统:Windows-x64安装方式:pip二、版本号截图三、体验分享         1、针对MindSpore 1.5.0此次大版本更新,不仅为MindSpore取了一个好听的中文名"昇思","昇思"谐音"深思",寓意是让用户在思考中成长,非常不错的一个名字。         同时新增了很多新的特性,包括:从AI计算扩展到AI+科学计算、大规模并行增加MoE并行和host/Device异构并行、集群调试、MindSpore Boost算法亲和库、复杂控制流完善等等;         这些新新特性使户使用起来也更加方便,大大的提升了效率。         2、本人体验了一下复杂控制流完善这个新特性,该特性提供了一系列算子,使得在MindIR进行推理更为方便、快捷。         其他的新特新本人也有去了解,看了一下,内容实在是太丰富了,看不过来了,后面有空继续学习,此次"昇思"给用户带来很多新的内容,非常值得去学习。        3、学习笔记        "昇思"新特性概括总结:            MindScience科学计算行业套件,为高性能科学应用提供计算新范式                1) MindElec v0.1                2) MindSPONGE v0.1           自动并行支持混合专家(MoE)与异构并行              1) 混合专家(MoE)及其并行              2) 异构并行              3)   MoE+异构并行,实现32卡训练2420亿参数模型              4)  超分辨率图像自动并行,解决遥感影像“大幅面、多通道”的处理难题          推出亲和算法库——MindSpore Boost          集群调试调优支持大规模分布式训练          MindSpore Lite新增对外开放机制,支持Hi3516/3549芯片以及更多异构硬件的对接         灵活表达:完善控制流,支持多种控制语句混合编写,支持循环自动微分 四、个人邮箱:1256494784@qq.com
  • [热门活动] 【MSG·WIT北京线下活动】25号14:00关于前沿科技、经济和职场分享,期待你的到来!
    9月25日(周六)14:00 ,我们邀请了来自贝壳找房业务数据中心产品负责人 李清华、快手经济学家 金雅然、AI&区块链艺术家 宋婷、华为MindSpore运营总监 胡晓曼,四位老师分享她们对前沿科技和经济的认识,并分享她们对行业发展和女性在科技领域自身职业发展的见解。希望能呈现更多观点、更多干货的同时,更能从女性的角度出发,帮助职场女性突破职业瓶颈,鼓励在校大学生勇敢选择,引导和带动职场白领、超级妈妈跟上这个信息时代,并进行科技转型。不管你是60后、70后、80后,还是90后和00后,希望你都能找到属于各自的科技圈子!本次MSG·WIT将会首次宣布成立女性开发者小组,专门针对女性开发者,组建学习小组,小组每月会设定一定的开发目标,顺利完成的开发者将会获得MindSpore官方授予的优秀女性开发者荣誉,并在官网上轮播展示!除此之外还会有额外的惊喜大礼包! 1、什么是MSG·WIT? MSG·WIT(Women in Tech)项目是由MindSpore开源社区发起,旨在鼓励和促进每一位女性在职场中实现自己的价值,通过每一次的活动分享都能有收获和提升,结识志同道合的朋友,认识更好的自己! 2、活动时间和地点?是否收费? 时间:2021年9月25日 14:00~18:00地址:北京市东城区炒豆胡同9号巴巴新生活活动是全程免费的。我们还准备了茶歇和伴手礼(腰部按摩仪)给大家! 3、什么人可以参加? 线下分享参与者不限男女。报名后会根据大家填写的信息来筛选最终来的人员,所以如果在北京的同学想要来参加的话,要认真填写问卷噢。MSG·WIT女性开发者小组只限女生参加噢!因疫情影响,机会难得!线下分享只限20位小伙伴参加报名审核通过将会通过邮箱告知你噢~请留意邮箱信息!扫码报名噢!
  • [活动体验] 《挑战进阶教程:活动一》
    活动一:对抗示例生成1.导入模型训练需要的库2.训练LeNet网络context.set_context(mode=context.GRAPH_MODE, device_target='CPU')class LeNet5(nn.Cell): def __init__(self, num_class=10, num_channel=1): super(LeNet5, self).__init__() self.conv1 = nn.Conv2d(num_channel, 6, 5, pad_mode='valid') self.conv2 = nn.Conv2d(6, 16, 5, pad_mode='valid') self.fc1 = nn.Dense(16 * 5 * 5, 120, weight_init=Normal(0.02)) self.fc2 = nn.Dense(120, 84, weight_init=Normal(0.02)) self.fc3 = nn.Dense(84, num_class, weight_init=Normal(0.02)) self.relu = nn.ReLU() self.max_pool2d = nn.MaxPool2d(kernel_size=2, stride=2) self.flatten = nn.Flatten() def construct(self, x): x = self.conv1(x) x = self.relu(x) x = self.max_pool2d(x) x = self.conv2(x) x = self.relu(x) x = self.max_pool2d(x) x = self.flatten(x) x = self.fc1(x) x = self.relu(x) x = self.fc2(x) x = self.relu(x) x = self.fc3(x) return xnet = LeNet5()def create_dataset(data_path, batch_size=1, num_parallel_workers=1): # 定义数据集 mnist_ds = ds.MnistDataset(data_path) resize_height, resize_width = 32, 32 rescale = 1.0 / 255.0 shift = 0.0 rescale_nml = 1 / 0.3081 shift_nml = -1 * 0.1307 / 0.3081 # 定义所需要操作的map映射 resize_op = CV.Resize((resize_height, resize_width), interpolation=Inter.LINEAR) rescale_nml_op = CV.Rescale(rescale_nml, shift_nml) rescale_op = CV.Rescale(rescale, shift) hwc2chw_op = CV.HWC2CHW() type_cast_op = C.TypeCast(mstype.int32) # 使用map映射函数,将数据操作应用到数据集 mnist_ds = mnist_ds.map(operations=type_cast_op, input_columns="label", num_parallel_workers=num_parallel_workers) mnist_ds = mnist_ds.map(operations=resize_op, input_columns="image", num_parallel_workers=num_parallel_workers) mnist_ds = mnist_ds.map(operations=rescale_op, input_columns="image", num_parallel_workers=num_parallel_workers) mnist_ds = mnist_ds.map(operations=rescale_nml_op, input_columns="image", num_parallel_workers=num_parallel_workers) mnist_ds = mnist_ds.map(operations=hwc2chw_op, input_columns="image", num_parallel_workers=num_parallel_workers) # 进行shuffle、batch操作 buffer_size = 10000 mnist_ds = mnist_ds.shuffle(buffer_size=buffer_size) mnist_ds = mnist_ds.batch(batch_size, drop_remainder=True) return mnist_dsnet_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean')net_opt = nn.Momentum(net.trainable_params(), learning_rate=0.01, momentum=0.9)config_ck = CheckpointConfig(save_checkpoint_steps=1875, keep_checkpoint_max=10)ckpoint = ModelCheckpoint(prefix="checkpoint_lenet", config=config_ck)def test_net(model, data_path): ds_eval = create_dataset(os.path.join(data_path, "test")) acc = model.eval(ds_eval, dataset_sink_mode=False) print("{}".format(acc)) def train_net(model, epoch_size, data_path, ckpoint_cb, sink_mode): ds_train = create_dataset(os.path.join(data_path, "train"), 32) model.train(epoch_size, ds_train, callbacks=[ckpoint_cb, LossMonitor(125)], dataset_sink_mode=sink_mode) train_epoch = 2mnist_path = "E:/mnist_dataset"model = Model(net, net_loss, net_opt, metrics={"Accuracy": nn.Accuracy()})train_net(model, train_epoch, mnist_path, ckpoint, False)test_net(model, mnist_path)训练过程:3.选择模型加载:4.实现FGSM:class WithLossCell(nn.Cell): """ 包装网络与损失函数 """ def __init__(self, network, loss_fn): super(WithLossCell, self).__init__() self._network = network self._loss_fn = loss_fn def construct(self, data, label): out = self._network(data) return self._loss_fn(out, label)class GradWrapWithLoss(nn.Cell): """ 通过loss求反向梯度 """ def __init__(self, network): super(GradWrapWithLoss, self).__init__() self._grad_all = ops.composite.GradOperation(get_all=True, sens_param=False) self._network = network def construct(self, inputs, labels): gout = self._grad_all(self._network)(inputs, labels) return gout[0]class FastGradientSignMethod: """ 实现FGSM攻击 """ def __init__(self, network, eps=0.07, loss_fn=None): # 变量初始化 self._network = network self._eps = eps with_loss_cell = WithLossCell(self._network, loss_fn) self._grad_all = GradWrapWithLoss(with_loss_cell) self._grad_all.set_train() def _gradient(self, inputs, labels): # 求取梯度 out_grad = self._grad_all(inputs, labels) gradient = out_grad.asnumpy() gradient = np.sign(gradient) return gradient def generate(self, inputs, labels): # 实现FGSM inputs_tensor = Tensor(inputs) labels_tensor = Tensor(labels) gradient = self._gradient(inputs_tensor, labels_tensor) # 产生扰动 perturbation = self._eps*gradient # 生成受到扰动的图片 adv_x = inputs + perturbation return adv_x def batch_generate(self, inputs, labels, batch_size=32): # 对数据集进行处理 arr_x = inputs arr_y = labels len_x = len(inputs) batches = int(len_x / batch_size) rest = len_x - batches*batch_size res = [] for i in range(batches): x_batch = arr_x y_batch = arr_y adv_x = self.generate(x_batch, y_batch) res.append(adv_x) adv_x = np.concatenate(res, axis=0) return adv_ximages = []labels = []test_images = []test_labels = []predict_labels = []ds_test = create_dataset(os.path.join(mnist_path, "test"), batch_size=32).create_dict_iterator(output_numpy=True)for data in ds_test: images = data['image'].astype(np.float32) labels = data['label'] test_images.append(images) test_labels.append(labels) pred_labels = np.argmax(model.predict(Tensor(images)).asnumpy(), axis=1) predict_labels.append(pred_labels) test_images = np.concatenate(test_images)predict_labels = np.concatenate(predict_labels)true_labels = np.concatenate(test_labels)5.运行攻击邮箱:mycode_mindspore@163.com
  • [活动体验] 挑战进阶教程:活动一
    对抗示例生成1.导入模型训练需要的库import osimport numpy as npfrom mindspore import Tensor, context, Model, load_checkpoint, load_param_into_netimport mindspore.nn as nnimport mindspore.ops as opsfrom mindspore.common.initializer import Normalfrom mindspore.train.callback import LossMonitor, ModelCheckpoint, CheckpointConfigimport mindspore.dataset as dsimport mindspore.dataset.transforms.c_transforms as Cimport mindspore.dataset.vision.c_transforms as CVfrom mindspore.dataset.vision import Interfrom mindspore import dtype as mstype2.  训练精度达标的LeNet网络context.set_context(mode=context.GRAPH_MODE, device_target='CPU')class LeNet5(nn.Cell): def __init__(self, num_class=10, num_channel=1): super(LeNet5, self).__init__() self.conv1 = nn.Conv2d(num_channel, 6, 5, pad_mode='valid') self.conv2 = nn.Conv2d(6, 16, 5, pad_mode='valid') self.fc1 = nn.Dense(16 * 5 * 5, 120, weight_init=Normal(0.02)) self.fc2 = nn.Dense(120, 84, weight_init=Normal(0.02)) self.fc3 = nn.Dense(84, num_class, weight_init=Normal(0.02)) self.relu = nn.ReLU() self.max_pool2d = nn.MaxPool2d(kernel_size=2, stride=2) self.flatten = nn.Flatten() def construct(self, x): x = self.conv1(x) x = self.relu(x) x = self.max_pool2d(x) x = self.conv2(x) x = self.relu(x) x = self.max_pool2d(x) x = self.flatten(x) x = self.fc1(x) x = self.relu(x) x = self.fc2(x) x = self.relu(x) x = self.fc3(x) return xnet = LeNet5()def create_dataset(data_path, batch_size=1, num_parallel_workers=1): # 定义数据集 mnist_ds = ds.MnistDataset(data_path) resize_height, resize_width = 32, 32 rescale = 1.0 / 255.0 shift = 0.0 rescale_nml = 1 / 0.3081 shift_nml = -1 * 0.1307 / 0.3081 # 定义所需要操作的map映射 resize_op = CV.Resize((resize_height, resize_width), interpolation=Inter.LINEAR) rescale_nml_op = CV.Rescale(rescale_nml, shift_nml) rescale_op = CV.Rescale(rescale, shift) hwc2chw_op = CV.HWC2CHW() type_cast_op = C.TypeCast(mstype.int32) # 使用map映射函数,将数据操作应用到数据集 mnist_ds = mnist_ds.map(operations=type_cast_op, input_columns="label", num_parallel_workers=num_parallel_workers) mnist_ds = mnist_ds.map(operations=resize_op, input_columns="image", num_parallel_workers=num_parallel_workers) mnist_ds = mnist_ds.map(operations=rescale_op, input_columns="image", num_parallel_workers=num_parallel_workers) mnist_ds = mnist_ds.map(operations=rescale_nml_op, input_columns="image", num_parallel_workers=num_parallel_workers) mnist_ds = mnist_ds.map(operations=hwc2chw_op, input_columns="image", num_parallel_workers=num_parallel_workers) # 进行shuffle、batch操作 buffer_size = 10000 mnist_ds = mnist_ds.shuffle(buffer_size=buffer_size) mnist_ds = mnist_ds.batch(batch_size, drop_remainder=True) return mnist_dsnet_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean')net_opt = nn.Momentum(net.trainable_params(), learning_rate=0.01, momentum=0.9)config_ck = CheckpointConfig(save_checkpoint_steps=1875, keep_checkpoint_max=10)ckpoint = ModelCheckpoint(prefix="checkpoint_lenet", config=config_ck)def test_net(model, data_path): ds_eval = create_dataset(os.path.join(data_path, "test")) acc = model.eval(ds_eval, dataset_sink_mode=False) print("{}".format(acc)) def train_net(model, epoch_size, data_path, ckpoint_cb, sink_mode): ds_train = create_dataset(os.path.join(data_path, "train"), 32) model.train(epoch_size, ds_train, callbacks=[ckpoint_cb, LossMonitor(125)], dataset_sink_mode=sink_mode)train_epoch = 1mnist_path = "C:/Users/DIVA_Score/Desktop/mnist_dataset"model = Model(net, net_loss, net_opt, metrics={"Accuracy": nn.Accuracy()})train_net(model, train_epoch, mnist_path, ckpoint, False)'''epoch: 1 step: 125, loss is 2.309873epoch: 1 step: 250, loss is 2.30484epoch: 1 step: 375, loss is 2.302457epoch: 1 step: 500, loss is 2.2895803epoch: 1 step: 625, loss is 2.306251epoch: 1 step: 750, loss is 2.3196976epoch: 1 step: 875, loss is 2.3023741epoch: 1 step: 1000, loss is 2.3087487epoch: 1 step: 1125, loss is 2.3092415epoch: 1 step: 1250, loss is 0.821931epoch: 1 step: 1375, loss is 0.22458856epoch: 1 step: 1500, loss is 0.23729604epoch: 1 step: 1625, loss is 0.2950006epoch: 1 step: 1750, loss is 0.27920684epoch: 1 step: 1875, loss is 0.34254763'''test_net(model, mnist_path)#{'Accuracy': 0.9513}param_dict = load_checkpoint("checkpoint_lenet-1_1875.ckpt")load_param_into_net(net, param_dict)实现FGSMclass WithLossCell(nn.Cell): """ 包装网络与损失函数 """ def __init__(self, network, loss_fn): super(WithLossCell, self).__init__() self._network = network self._loss_fn = loss_fn def construct(self, data, label): out = self._network(data) return self._loss_fn(out, label)class GradWrapWithLoss(nn.Cell): """ 通过loss求反向梯度 """ def __init__(self, network): super(GradWrapWithLoss, self).__init__() self._grad_all = ops.composite.GradOperation(get_all=True, sens_param=False) self._network = network def construct(self, inputs, labels): gout = self._grad_all(self._network)(inputs, labels) return gout[0]class FastGradientSignMethod: """ 实现FGSM攻击 """ def __init__(self, network, eps=0.07, loss_fn=None): # 变量初始化 self._network = network self._eps = eps with_loss_cell = WithLossCell(self._network, loss_fn) self._grad_all = GradWrapWithLoss(with_loss_cell) self._grad_all.set_train() def _gradient(self, inputs, labels): # 求取梯度 out_grad = self._grad_all(inputs, labels) gradient = out_grad.asnumpy() gradient = np.sign(gradient) return gradient def generate(self, inputs, labels): # 实现FGSM inputs_tensor = Tensor(inputs) labels_tensor = Tensor(labels) gradient = self._gradient(inputs_tensor, labels_tensor) # 产生扰动 perturbation = self._eps*gradient # 生成受到扰动的图片 adv_x = inputs + perturbation return adv_x def batch_generate(self, inputs, labels, batch_size=32): # 对数据集进行处理 arr_x = inputs arr_y = labels len_x = len(inputs) batches = int(len_x / batch_size) rest = len_x - batches*batch_size res = [] for i in range(batches): x_batch = arr_x y_batch = arr_y adv_x = self.generate(x_batch, y_batch) res.append(adv_x) adv_x = np.concatenate(res, axis=0) return adv_x images = []labels = []test_images = []test_labels = []predict_labels = []ds_test = create_dataset(os.path.join(mnist_path, "test"), batch_size=32).create_dict_iterator(output_numpy=True)for data in ds_test: images = data['image'].astype(np.float32) labels = data['label'] test_images.append(images) test_labels.append(labels) pred_labels = np.argmax(model.predict(Tensor(images)).asnumpy(), axis=1) predict_labels.append(pred_labels) test_images = np.concatenate(test_images)predict_labels = np.concatenate(predict_labels)true_labels = np.concatenate(test_labels)运行攻击fgsm = FastGradientSignMethod(net, eps=0.0, loss_fn=net_loss)advs = fgsm.batch_generate(test_images, true_labels, batch_size=32)adv_predicts = model.predict(Tensor(advs)).asnumpy()adv_predicts = np.argmax(adv_predicts, axis=1)accuracy = np.mean(np.equal(adv_predicts, true_labels))print(accuracy)#设定为0.7,尝试运行攻击:fgsm = FastGradientSignMethod(net, eps=0.7, loss_fn=net_loss)advs = fgsm.batch_generate(test_images, true_labels, batch_size=32)adv_predicts = model.predict(Tensor(advs)).asnumpy()adv_predicts = np.argmax(adv_predicts, axis=1)accuracy = np.mean(np.equal(adv_predicts, true_labels))print(accuracy)#0.2675280448717949import matplotlib.pyplot as pltadv_examples = np.transpose(advs[:10],[0,2,3,1])ori_examples = np.transpose(test_images[:10],[0,2,3,1]) plt.figure() for i in range(10): plt.subplot(2,10,i+1) plt.imshow(ori_examples) plt.subplot(2,10,i+11) plt.imshow(adv_examples)以下改变攻击系数的截图:攻击系数为0时:攻击系数为0.2时:攻击系数为0.4时:攻击系数为0.5时:攻击系数为0.7时:攻击系数为0.8时:攻击系数为1时:邮箱:diva_score@163.com
  • [活动体验] 《挑战进阶教程:活动二》
    1.先说一个最直观的感受,安装指南这块增加了2个跳转功能,对于小白来说,即使不会命令下载,也可以通过视频来帮助自己完成安装过程!这个体验很棒2.再提一个建议:当点开视频教程时,页面直接跳转了,完全脱离了第一个界面。个人建议是:比如我选择的版本是1.3 CPU win10  pip安装模式,视频只弹窗展示当前的安装内容。以此类推。不知道可不可行0.0个人邮箱:13429775255@163.com
  • [活动体验] 《挑战进阶教程:活动二》
    活动二:对调整后的官网的文档和网站结构,体验后给出详细的感受1,首先还是觉得值得肯定,调整后的mindspore官网,更加得清晰明了一点,各种的文档说明也有补充,但是这段时间使用会发现官网有时会进不去,像是崩了,已经排除是我的网络问题,这个问题还是希望能够改善一下;然后我个人觉得这一部分的导航栏是有一点重复的,包括说是上下的导航栏、文档和API的部分链接。2,一般我进去官网是查看一些API文档的,想搞懂一些在pytorch上不一样的API,这个时候就需要看官方的说明文档,就有三个部分,最左边是api总的导航栏,中间是api,最右边是具体某一模块中的api列表,其实我觉得这样的布局不错,但是那个文档的字太小,一下子挤在一起看起来比较累,我一般是Ctrl+f,找到关键字,点进api,Ctrl+鼠标滚动放大来看;还有一个问题就是,对于多个api查阅的时候,点击相应api直接在当前页面打开的操作我感觉不太友好,还是点击链接在新窗口打开这种方式比较人性化一点。3,最后一点,是关于API映射的,因为mindspore框架比较新,之前一直用的是pytorch,这个时候肯定是有一个对应的过程,就是在pytorch里面用的在mindspore可能变名字(这是常有的事),虽然基本是一样的操作,但是名字 就是不一样,然后就用到API映射,但是这个页面,我要是新的用户就真的找半天找不到,然后就感觉很不友好,建议把这个比较重要的页面放在比较好找的位置,或者设置明显一点的导航。最后,以上只是个人使用体验,比较主观。个人邮箱:sticktoonrthing@163.com
  • [活动体验] 《挑战进阶教程:活动一》
    任务2:参考官网《对抗示例》教程,输出攻击后的加噪声的图片即可,记录关键步骤。1.  定义LeNet网络:2.  训练网络并且预测结果:3.  使用攻击系数为0的 FGSM 进行攻击,并预测结果。此时攻击效果不明显:4.  使用攻击系数为0.5的 FGSM 进行攻击,并预测结果。此时攻击效果明显:5.  输出攻击后的加噪声的图片个人邮箱:chenjiatao777@163.com
总条数:161 到第
上滑加载中