注意,若在图模式内对Cell/jit_class对象进行属性修改前也获取了相同属性,该获取到的属性会被解析为常量。在多次运行相同网络时可能会造成问题,例如:
import mindspore as ms
from mindspore import nn, set_context
set_context(mode=ms.GRAPH_MODE)
class InnerNet(nn.Cell):
def init(self):
self.x = 1
class Net(nn.Cell):
def init(self):
super().init()
self.inner = InnerNet()
def construct(self):
a = self.inner.x
self.inner.x = a + 1
return
net = Net()
value0 = net.inner.x
net()
value1 = net.inner.x
net()
value2 = net.inner.x
print(f"value0 is {value0}")
print(f"value1 is {value1}")
print(f"value2 is {value2}")
运行结果为:
value0 is 1
value1 is 2
value2 is 2
但是在动态图模式下,value2的值应该为3。但因为语句a = self.inner.x中的self.inner.x被固化为常量2,导致两次运行时self.inner.x被设置的值均为2。此问题将在后续版本解决。
正确性:
代码样例运行报错、运行结果不符;
报错信息:
……
raise AttributeError("The '{}' object has no attribute '{}'.".format(type(self).name, name))
AttributeError: The 'InnerNet' object has no attribute '_params'.
——————————————————————————
该代码无法运行,同样是在一个Cell中使用另一个Cell出现了问题,请问这是否为静态图的某种典型错误?
Please assign maintainer to check this issue.
请为此issue分配处理人。
@fangwenyi @chengxiaoli @Shawny
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
感谢您的提问,您可以评论//mindspore-assistant更快获取帮助:
得分:5
类型:正确性
活动链接(可查询积分):https://www.mindspore.cn/feedback
欢迎您提交更多issue或PR,获得更多积分。
您好,由于问题单没有回复,我们后续会关闭,如您仍有疑问,可以反馈下具体信息,并将ISSUE状态修改为WIP,我们这边会进一步跟踪,谢谢
登录 后才可以发表评论