摘要:
记录MindSpore AI框架使用ShuffleNet网络对CIFAR-10数据集进行分类的过程、步骤和方法。包括环境准备、下载数据集、数据集加载和预处理、构建模型、模型训练、模型评估、模型测试等。
一、概念
1.ShuffleNet网络
旷视科技提出的CNN模型
应用在移动端
通过设计更高效的网络结构来实现模型的压缩和加速。
目标
利用有限资源达到最好的模型精度。
核心引入了两种操作
Pointwise Group Convolution
Channel Shuffle
优点
保持准确率不低,降低参数量
2.模型架构
ShuffleNet最显著的特点
重排不同通道解决Group Convolution弊端
改进ResNet Bottleneck单元
较小计算量达到较高准确率
Pointwise Group Convolution
Group Convolution(分组卷积)原理图
分组卷积
每组卷积核大小为in_channels/g*k*k
共有g组
所有组共有(in_channels/g*k*k)*out_channels个参数
是正常卷积参数的1/g
每个卷积核只处理输入特征图部分通道
优点
降低参数量,输出通道数仍等于卷积核的数量
Depthwise Convolution(深度可分离卷积)
将组数g分为和输入通道相等的in_channels
卷积操作每个in_channels
每个卷积核只处理一个通道
卷积核大小为1*k*k
卷积核参数量:in_channels*k*k
feature maps通道数与输入通道数相等
Pointwise Group Convolution(逐点分组卷积)
分组卷积基础
每组卷积核大小 1×11×1
卷积核参数量为(in_channels/g*1*1)*out_channels
3.Channel Shuffle
通道重排
Group Convolution的弊端
不同组别的通道无法进行信息交流
降低网络的特征提取能力
不同分组通道均匀分散重组
下一层网络能处理不同组别通道的信息
对于g组
每组有n个通道的特征图
reshape成g行n列的矩阵
矩阵转置成n行g列
flatten操作得到新排列
轻操作
二、环境准备
%%capture captured_output
# 实验环境已经预装了mindspore==2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号
!pip uninstall mindspore -y
!pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore==2.2.14
# 查看当前 mindspore 版本
!pip show mindspore
输出:
Name: mindspore
Version: 2.2.14
Summary: MindSpore is a new open source deep learning training/inference framework that could be used for mobile, edge and cloud scenarios.
Home-page: https://www.mindspore.cn
Author: The MindSpore Authors
Author-email: contact@mindspore.cn
License: Apache 2.0
Location: /home/nginx/miniconda/envs/jupyter/lib/python3.9/site-packages
Requires: asttokens, astunparse, numpy, packaging, pillow, protobuf, psutil, scipy
Required-by:
分组卷积类
from mindspore import nn
import mindspore.ops as ops
from minds