概述
问题描述:
【功能模块】
class ResizeBilinear(Cell):
def __init__(self,):
"""Initialize ResizeBilinear."""
super(ResizeBilinear, self).__init__()
def construct(self, x, size=None, scale_factor=None, align_corners=False):
shape = bilinear(x.shape, size, scale_factor, align_corners, self.cls_name)
resize_bilinear = P.ResizeBilinear(shape, align_corners)
return resize_bilinear(x)
【操作步骤&问题现象】
1、构建网络时想指定size或者factor,但是发现只能在前向计算时才能指定参数,
【截图信息】
如果改成这样,是不是能行得通?
def __init__(self, size=None, scale_factor=None, align_corners=False):
"""Initialize ResizeBilinear."""
super(ResizeBilinear, self).__init__()
self.size = size
self.scale_factor = scale_factor
self.align_corners = align_corners
解答:
你可以采用如下方式调用:
from mindspore.ops import ResizeBilinear
__init__
self.resizebilinear = ResizeBilinear(参数化)
construct
x = self.resizebilinear(x)
中间还可能需要下面这个函数来做一些初始化工作
from mindspore.nn.layer.basic import bilinear
其实您的需求可以理解为,您期望在construct中使用,而且ResizeBilinear在网络中按照传入的shape动态resize,mindspore目前暂时不支持这个功能,这个主要的限制是动态shape的支持,动态shape可以理解为网络训练过程中,由于某些层的网络输入输出shape不固定,导致整个网络训练时需要编译多次图,您想要的这种功能,一定会出现动态shape,目前mindspore对动态shape的支持有限,您的这种场景目前还不支持,后续动态shape支持完善之后,才能支持。
最后
以上就是无限月饼为你收集整理的【mindspore框架】【nn.ResizeBilinear()】能否在构建网络时指定size或者scale_factor?的全部内容,希望文章能够帮你解决【mindspore框架】【nn.ResizeBilinear()】能否在构建网络时指定size或者scale_factor?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复