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

【Mindspore】【ops.ReduceMean】ops.ReduceMean 放到网络中无法运行训练脚本

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

【Mindspore】【ops.ReduceMean】ops.ReduceMean 放到网络中无法运行训练脚本

问题描述:

问题算子

ops.ReduceMean算子

实验环境
  • 操作系统: Ubuntu20.04
  • Python版本: Python3.7.5
  • Mindspore版本: mindspore-gpu 1.5.0
  • CUDA版本: 11.1

安装命令

conda install mindspore-gpu=1.5.0 cudatoolkit=11.1 -c mindspore -c conda-forge

具体代码 1. 使用 ops.ReduceMean()算子替代GlobalAvgPool算子
import mindspore.nn as nnfrom mindspore import ops



class GlobalAvgPool(nn.Cell):

    def __init__(self):

        super(GlobalAvgPool, self).__init__()

        self.global_avg_pool = ops.ReduceMean(keep_dims=False)



    def construct(self, x):

        return self.global_avg_pool(x=x, axis=(0, 1))
2. 将上面实现的算子放在CNN中
class CNN(nn.Cell):

    def __init__(self, num_class, img_channel, img_size, actions):

        super(CNN, self).__init__()

        self.layers = list()

        last_out_channel = img_channel

        for i in range(len(actions)):

            conv = nn.Conv2d(in_channels=last_out_channel,

                             out_channels=actions[i]['filter_num'],

                             kernel_size=actions[i]['kernel_size'],

                             pad_mode='same')

            last_out_channel = actions[i]['filter_num']

            self.layers.append(conv)

            self.layers.append(nn.ReLU())

        self.sequential_cell = nn.SequentialCell(self.layers)

        self.global_avg_pool = GlobalAvgPool()

        self.flatten = nn.Flatten()

        self.dense = nn.Dense(in_channels=last_out_channel,out_channels=num_class)



    def construct(self, x):

        x = self.sequential_cell(x)

        x = self.global_avg_pool(x)

        x = self.flatten(x)

        x = self.dense(x)

        return x

运行训练报错:

{0: {'layer_id': 0, 'filter_num': 9, 'kernel_size': 7}, 1: {'layer_id': 1, 'filter_num': 18, 'kernel_size': 5}, 2: {'layer_id': 2, 'filter_num': 18, 'kernel_size': 7}, 3: {'layer_id': 3, 'filter_num': 36, 'kernel_size': 14}, 4: {'layer_id': 4, 'filter_num': 36, 'kernel_size': 14}, 5: {'layer_id': 5, 'filter_num': 36, 'kernel_size': 5}, 6: {'layer_id': 6, 'filter_num': 36, 'kernel_size': 14}, 7: {'layer_id': 7, 'filter_num': 36, 'kernel_size': 5}, 8: {'layer_id': 8, 'filter_num': 36, 'kernel_size': 14}, 9: {'layer_id': 9, 'filter_num': 18, 'kernel_size': 7}}

CNN<

  (sequential_cell): SequentialCell<

    (0): Conv2d

    (1): ReLU<>

    (2): Conv2d

    (3): ReLU<>

    (4): Conv2d

    (5): ReLU<>

    (6): Conv2d

    (7): ReLU<>

    (8): Conv2d

    (9): ReLU<>

    (10): Conv2d

    (11): ReLU<>

    (12): Conv2d

    (13): ReLU<>

    (14): Conv2d

    (15): ReLU<>

    (16): Conv2d

    (17): ReLU<>

    (18): Conv2d

    (19): ReLU<>

    >

  (global_avg_pool): GlobalAvgPool<>

  (flatten): Flatten<>

  (dense): Dense

  >[EXCEPTION] ANALYZER(117475,7f5958cab740,python):2021-12-19-15:21:05.166.863 [mindspore/ccsrc/pipeline/jit/static_analysis/prim.cc:504] ConvertAbstractToPython] Unsupported parameter type for python primitive.AbstractKeywordArg(key : xvalue : AbstractTensor(shape: (64, 18, 28, 28), element: AbstractScalar(Type: Float32, Value: AnyValue, Shape: NoShape), value_ptr: 0x556598062db0, value: AnyValue))

Traceback (most recent call last):

  File "/home/yons/Desktop/fnas/QHW-NAS/NAS/train.py", line 49, in 

    train()

  File "/home/yons/Desktop/fnas/QHW-NAS/NAS/train.py", line 34, in train

    callbacks=[summary_collector], dataset_sink_mode=False)

  File "/home/yons/anaconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/train/model.py", line 726, in train

    sink_size=sink_size)

  File "/home/yons/anaconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/train/model.py", line 498, in _train

    self._train_process(epoch, train_dataset, list_callback, cb_params)

  File "/home/yons/anaconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/train/model.py", line 626, in _train_process

    outputs = self._train_network(*next_element)

  File "/home/yons/anaconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/nn/cell.py", line 404, in __call__

    out = self.compile_and_run(*inputs)

  File "/home/yons/anaconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/nn/cell.py", line 682, in compile_and_run

    self.compile(*inputs)

  File "/home/yons/anaconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/nn/cell.py", line 669, in compile

    _cell_graph_executor.compile(self, *inputs, phase=self.phase, auto_parallel_mode=self._auto_parallel_mode)

  File "/home/yons/anaconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/common/api.py", line 548, in compile

    result = self._graph_executor.compile(obj, args_list, phase, use_vm, self.queue_name)

TypeError: mindspore/ccsrc/pipeline/jit/static_analysis/prim.cc:504 ConvertAbstractToPython] Unsupported parameter type for python primitive.AbstractKeywordArg(key : xvalue : AbstractTensor(shape: (64, 18, 28, 28), element: AbstractScalar(Type: Float32, Value: AnyValue, Shape: NoShape), value_ptr: 0x556598062db0, value: AnyValue))

The function call stack (See file '/home/yons/Desktop/fnas/QHW-NAS/NAS/rank_0/om/analyze_fail.dat' for more details):# 0 In file /home/yons/anaconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/nn/wrap/cell_wrapper.py(353)

        loss = self.network(*inputs)

               ^# 1 In file /home/yons/anaconda3/envs/mindspore/lib/python3.7/site-packages/mindspore/nn/wrap/cell_wrapper.py(110)

        out = self._backbone(data)

              ^# 2 In file /home/yons/Desktop/fnas/QHW-NAS/NAS/neural_network/model.py(34)

        x = self.global_avg_pool(x)

            ^# 3 In file /home/yons/Desktop/fnas/QHW-NAS/NAS/neural_network/model.py(11)

        return self.global_avg_pool(x=x, axis=(0, 1))

               ^





Process finished with exit code 1

解答:

ops.ReduceMean使用错误,

self.global_avg_pool(x, axis=(0, 1))

改成:

self.global_avg_pool(x, (0, 1))

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

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

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