# 迁移网络时转化为静态图的时候报错

**1. 系统环境**

硬件环境\(Ascend/GPU/CPU\): GPU

软件环境: MindSpore 版本: 2.0

执行模式（静态图/动态图）： 不限

Python 版本: 3.7.6

操作系统平台: linux

**2. 报错信息**

迁移网络时转化为静态图的时候报错。

![](figures/zh-cn_image_0000002101469162.png)**3. 根因分析**

此问题原因在于当前mindspore在静态图语法的限制，对于cell类的成员属性self.\_cache，是一个dict，当前暂时不支持在construct里面对其进行修改操作。

源代码：

```
    def cached_grid_anchors(self, grid_sizes, strides):
        # type: (List[List[int]], List[List[Tensor]]) -> List[Tensor]
        """将计算得到的所有anchors信息进行缓存"""
        key = str(grid_sizes) + str(strides)
        # self._cache是字典类型
        if key in self._cache:
            return self._cache[key]
        anchors = self.grid_anchors(grid_sizes, strides)
        self._cache[key] = anchors
        return anchors
```

**4. 解决方案**

只有在函数cached\_grid\_anchors使用了该成员属性，修改为self.\_cache作为临时变量：

```
    def cached_grid_anchors(self, grid_sizes, strides):
        # type: (List[List[int]], List[List[Tensor]]) -> List[Tensor]
        """将计算得到的所有anchors信息进行缓存"""
        key = str(grid_sizes) + str(strides)
        # self._cache是字典类型
        cache_dict = {}
        if key in cache_dict:
            return cache_dict[key]
        anchors = self.grid_anchors(grid_sizes, strides)
        cache_dict[key] = anchors
        return anchors
```

