使用 MindSpore Lite Converter 工具,将 ResNet 网络模型从 mindir 格式转换为 ms 格式报错失败
收藏回复举报
使用 MindSpore Lite Converter 工具,将 ResNet 网络模型从 mindir 格式转换为 ms 格式报错失败
t('forum.solved') 已解决
发表于2023-07-25 19:00:51
0 查看

使用 MindSpore 官方提供的 ResNet18 作为骨干网络,通过 mindspore.export 函数生成 mindir 格式文件成功。然后尝试通过 MindSpore Lite 的 converter 工具将其转换为 ms 格式文件,以用于移动端训练时报错。

系统:Windows 11 环境下的 WSL2 Ubuntu 系统,参考官方文档安装配置运行环境,Mindspore 及 Mindspore Lite 版本均为 2.0.0,python 版本 3.9。

导出 MINDIR 格式模型的代码为:

import mindspore as ms
import numpy as np
from mindspore import Tensor, nn
from mindvision.classification.models import resnet18

num_classes = 10
image_size = 224
learning_rate = 1e-3


def export_train_model():
    model = resnet18(num_classes=num_classes, pretrained=False)

    loss_fn = nn.MSELoss()
    optimizer = nn.SGD(model.trainable_params(), learning_rate=learning_rate)

    # export trainable model
    model.set_train(True)
    example_input = Tensor(np.ones((1, 3, image_size, image_size), dtype=np.float32))
    example_label = Tensor(np.ones((num_classes), dtype=np.float32))
    loss_net = nn.WithLossCell(backbone=model, loss_fn=loss_fn)
    train_net = nn.TrainOneStepCell(network=loss_net, optimizer=optimizer)
    ms.export(train_net,
              example_input, example_label,
              file_format='MINDIR',
              file_name='model_train')
    print('导出推理模型完成')


if __name__ == '__main__':
    export_train_model()

推理模型转换成功,但是转换训练模型失败,转换命令为:

./converter_lite --fmk=MINDIR --trainModel=true --modelFile=model_train.mindir --outputFile=model_train.ms

日志输出为:

[WARNING] LITE(1609,7ff5fbe81f40,converter_lite):2023-07-25-18:39:47.833.719 [mindspore/lite/tools/common/graph_util.cc:127] GetShapeVectorAndIdxFromCNode] Shape is empty Default/network-WithLossCell/_loss_fn-MSELoss/ReduceMean-op157
[ERROR] CORE(1609,7ff5fbe81f40,converter_lite):2023-07-25-18:39:47.873.941 [mindspore/core/ir/tensor.cc:599] MakeTensorData] Cannot construct Tensor because of unsupported data type: 0.
[ERROR] CORE(1609,7ff5fbe81f40,converter_lite):2023-07-25-18:39:47.874.013 [mindspore/core/utils/log_adapter.cc:392] operator^] Runtime error for null exception handler.
Expect tensor type kNumber or kString or kTensor but got: None.

----------------------------------------------------
- C++ Call Stack: (For framework developers)
----------------------------------------------------
mindspore/core/ir/tensor.cc:810 ToAbstract

encounter an unknown error, please verify the input model file or build the debug version

我要发帖子