众所周知,Hub加载模型向应用开发者提供了简单易用的模型加载和微调APIs,开发者们可以基于预训练模型进行推理或者微调,并部署到自己的应用中,也可以将自己训练好的模型按照指定的步骤发布到MindSpore Hub中。
对于我个人来说,确实在使用前期MindSpore Hub有点难,但是真正使用之后就会发现越来越顺手,开发过程中十分方便。
Mindspore_hub.load API用于加载预训练模型,该模型可以使用代码行完成模型的加载。主要的模型加载流程是这样的:
首先,使用GoogleNet对CIFAR-10数据集进行分类,代码长这样:
import mindspore_hub as mshub
import mindspore
from mindspore import context, Tensor, nn, Model
from mindspore import dtype as mstype
import mindspore.dataset.vision.py_transforms as py_transforms
context.set_context(mode=context.GRAPH_MODE,
device_target="Ascend",
device_id=0)
model = "mindspore/ascend/0.7/googlenet_v1_cifar10"
# Initialize the number of classes based on the pre-trained model.
network = mshub.load(model, num_classes=10)
network.set_train(False)
# ...
同时,模型也可以用于迁移学习,通过mindspore_hub.load完成模型加载后,我们可以添加一个额外的参数元素,并且只加载神经网络的功能牵引部分,以便我们可以轻松地添加新的层进行迁移学习。如果模型开发人员向模型设计中添加其他参数,可以在模型的详情页中找到这个功能。include_top取值为True或者False,表示顶级网络是否应保持完全连接。
下面我们以MobileNetV2如何加载一个基于OpenImage的预训练模型,并在特定的子任务数据集上进行迁移学习(重训练)。主要的步骤如下:
使用url进行MindSpore Hub模型的加载,代码长这样:
import os
import mindspore_hub as mshub
import mindspore
from mindspore import context,