Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
|
4 years ago | |
---|---|---|
.. | ||
log | 4 years ago | |
model | 4 years ago | |
myData/randomData255 | 4 years ago | |
ofData | 4 years ago | |
output/snapshots | 4 years ago | |
prune | 4 years ago | |
util | 4 years ago | |
ofrecordMake.py | 4 years ago | |
readme.md | 4 years ago | |
run.py | 4 years ago | |
run_alexnet_cifar10.sh | 4 years ago | |
run_dnn2_cifar10.sh | 4 years ago | |
train_val.py | 4 years ago |
通道剪枝:剪去DNN模型或者CNN模型的一些冗余的参数通道,来获得更小的模型和更快的结果
炼知技术平台提供了7个通道剪枝相关算子,以及众多基于Oneflow算子复现的通道剪枝模型和使用示例。
类型 | 通道剪枝算子 | 算子介绍 |
---|---|---|
DNN剪枝 | 神经元权重剪枝 | 以DNN神经网络的神经元训练参数的平均值作为剪枝权重,根据用户设置的剪枝率,减去权重较小的神经元 |
CNN剪枝 | BN层剪枝 | 以CNN神经网络的BN层gamma参数作为剪枝权重,根据用户设置的剪枝率,减去权重较小的卷积通道(卷积核) |
CNN剪枝 | 卷积层权重平均剪枝 | 以CNN神经网络的卷积层参数的平均值作为剪枝权重,根据用户设置的剪枝率,减去权重较小的卷积通道(卷积核) |
CNN剪枝 | 卷积层权重总和剪枝 | 以CNN神经网络的卷积层参数的总和作为剪枝权重,根据用户设置的剪枝率,减去权重较小的神卷积通道(卷积核) |
CNN剪枝 | 卷积层权重最大值剪枝 | 以CNN神经网络的卷积层参数的最大值作为剪枝权重,根据用户设置的剪枝率,减去权重较小的卷积通道(卷积核) |
CNN剪枝 | 随机剪枝 | 根据用户设置的剪枝率,随机选取卷积通道(卷积核)进行剪枝 |
CNN剪枝 | 卷积层阈值剪枝 | 计算CNN神经网络的卷积层参数中大于阈值的个数,将此个数作为剪枝的权重,根据用户设置的剪枝率,减去权重较小的卷积通道(卷积核) |
CUDA Version 10.1.243
CUDA Driver Version: 418.56
oneflow_cu101
numpy > 1.17.0
可通过以下命令安装
python3 -m pip install --find-links https://oneflow-inc.github.io/nightly oneflow_cu101 --user
# 若找不到对应版本,升级pip
python3 -m pip install --upgrade --user pip
# 运行关于numpy的报错,例如module 'numpy.random' has no attribute 'default_rng'
# 由于numpy版本低于1.17.0,升级numpy
python3 -m pip install --upgrade --user numpy
默认运行(训练基模型、剪枝、微调)
# cifar10数据集、alexnet模型
python run.py
运行结果见output文件夹,文件夹结构说明见2.4 文件说明
运行过程的日志见log文件夹,文件夹结构说明见2.4 文件说明
改变默认数据集(可选mnist、cifar10、cifar100)
python run.py --data_type=mnist
改变默认模型(可选dnn_2、dnn_4、lenet、alexnet、vgg、resnet)
python run.py --model=lenet
改变剪枝率
python run.py --percent=0.5
改变剪枝算子
# dnn剪枝不需要此参数,默认权重剪枝
# cnn剪枝算子有bn、conv_avg、conv_all、conv_max、random、conv_threshold
python run.py --prune_method=bn
改变更多参数
使用自己数据集(以randomData255为例)
数据集示例见myData下的randomData255,里面train.json包含了2张3*32*32大小的图片,test.json包含了2张3*32*32大小的图片
创建自己的数据集文件夹在myData文件夹下,文件夹名为数据集的名字randomData255
randomData255文件夹中有两个文件:train.json和test.json,介绍如下
在ofrecordMake.py文件夹下运行:
# randomData255换成自己的数据集名称,制作完成的数据集见ofData文件夹
python ofrecordMake.py --dataName=randomData255
基模型训练、剪枝、微调,运行:
# randomData255换成自己的数据集名称
python run.py --data_type=randomData255
自定义步骤step
1代表训练基模型;2代表剪枝、3代表微调,默认step=123
只运行训练基模型
python run.py --step=1
只运行剪枝:
# 在output/snapshots中对应位置需要有model_base,位置介绍见下面output文件夹介绍
python run.py --step=2
只运行微调:
# 在./output/snapshots中对应位置需要有model_prune
python run.py --step=3
运行训练基模型、剪枝
python run.py --step=12
py文件说明
run.py
自动化调用train.py来进行训练和微调,以及prune剪枝
大部分参数设置为默认值,可以自动调整部分参数
部分参数包括:model、data_type、prune_method、percent
示例
python run.py --model alexnet --data_type=cifar10 --prune_method=bn --step=123
train_val.py
ofrecordMake.py
制作自定义数据集
文件夹说明
log文件夹
model文件夹
util文件夹
prune文件夹
ofData文件夹
output文件夹
一站式算法开发平台、高性能分布式深度学习框架、先进算法模型库、视觉模型炼知平台、数据可视化分析平台等一系列平台及工具,在模型高效分布式训练、数据处理和可视分析、模型炼知和轻量化等技术上形成独特优势,目前已在产学研等各领域近千家单位及个人提供AI应用赋能
Java Vue Python Text JavaScript other