【mindspore框架】【nn.ResizeBilinear()】能否在构建网络时指定size或者scale_factor?

问题描述:

【功能模块】

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支持完善之后,才能支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值