栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【Mindspore】【自定义算子功能】aot类型自定义算子如何指定输出参数个数以及如何对多参数求导

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Mindspore】【自定义算子功能】aot类型自定义算子如何指定输出参数个数以及如何对多参数求导

问题描述:

【自定义算子功能】

【操作步骤&问题现象】

问题一、aot类型自定义算子如何确定输出参数数量

我使用Custom算子定义了一个算子,有7个输入参数和3个输出参数,理论上在C++代码中应该获取到10个参数,可是实际却只获得了8个参数,请问应该如何修改呢?

C++代码如下:

Python调用代码:

问题二、上图中的backword函数我将其定义为了另一个Custom算子的反向求导过程,希望对kernels, offsets_h, offsets_v三个参数求导,输出shape都为[8, 169, 48, 48],可是我却得到了一个长度为169的list,内容为(48,48)的Tensor。但我希望得到3个[8, 169, 48, 48]的grad_Tensor。请问应该怎么修改呢?

输出:

解答:

第一个问题:out_shape和out_dtype你要用一个列表把所有输出的shape和dtype放进去,如果三个输出都是[8, 169, 48, 48]和mindspore.float32,那么out_shape = [[8, 169, 48, 48], [8, 169, 48, 48], [8, 169, 48, 48]], out_dtype=[mindspore.float32, mindspore.float32, mindspore.float32]

第二个问题虽然我不是太清楚为什么会出现169个,但是应该和第一个问题类似,你可以先把out_shape和out_dtype设置正确,看看是否还有问题,如果还有可以在这留言反馈我帮你看看

也非常感谢你在MindSpore实践中的反馈,多输出这块我们会在文档中更新相关内容指导用户书写。

把输出shape的最外层用tuple包装,即((8, 169, 48, 48), (8, 169, 48, 48), (8, 169, 48, 48))试试,输出dtype也是,用tuple包装,不要用list,从报错信息来看,MindSpore无法处理ListShape类型

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/994039.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号