Tensorflow2.0之维度变换
[TOC]
概述改变张量形状
删除维度
交换维度
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950# 交换维度# tf.transpose(input,perm)x=tf.constant([[1,2,3],[4,5,6]])x# 从输出我们可以看到张量x是一个2行3列的二维数组tf.transpose(x)# 从日志我们可以看到。交换维度之后,原来2行3列的二维数组。# 变成3行2列的二维数组了。# 第二个参数:perm# 可以通过第二个参数调整轴的顺序.相当于我们交换了第0个轴和第一个轴的顺序# 也相当于发生了转置a = tf.transpose(x,perm=[1,0])a# <tf.Tensor: shape=(3, 2), dtype=int32, numpy=# array([[1, 4],# [2, 5],# [3, 6]], dtype=int32)># 我们继续看一下三维数组例子# 长度为24的一 ...
SNPE基础概念学习
[TOC]
概述
通过模型的Model Conversion Tools将原有训练好的Caffe模型等等转换成为SNPE模型(.dlc文件)
然后开发宿主机,比如Linux的工作主机
不管是优化的模型,还是没有优化的模型。使用SNPE Enabled App
DLC 文件加载器
模型校验
Hexagon
HVX 向量加速单元
HTA 张量加速单元
分区逻辑:
SNPE基础文档学习
[TOC]
概述
神经网络层类型
描述
CPU
GPU
DSP/AIP
批量归一化(Batch normalization)
批量标准化,然后进行缩放操作。批量归一化操作可以单独执行,也可以与缩放结合执行。
✔
✔
✔
色彩空间转换
将输入图像颜色格式(编码类型)转换为 SNPE 原生颜色空间。颜色空间转换参数作为模型转换器工具的一个选项提供。
✔
✔
✔
Concatenation
该层将多个输入连接成一个输出
✔
✔
✔
回旋
计算过滤器条目和任意位置输入之间的点积
✔
✔
✔
裁剪
将一层裁剪为参考层的尺寸
✔
✔
✔
跨图归一化
这是 LRN 层中的一个选项
✔
✔
✔
去卷积
Performs deconvolution operation
✔
✔
✔
深度卷积
执行 2D 深度卷积
✔
✔
✔
Dropout
Layer is used for training only. Converters remove this layer from DLC creation.
NA
NA
NA
按元素
支持带系数的 SUM、P ...
SNPE使用之Int8量化的理解
[TOC]
概述本系列的目是详细叙述当前移动端Int8的方方面面,从最底层的Int8的汇编层实现原理以及汇编性能优化手段,到中间层的移动框架的配套代码实现(标准就以NCNN为例吧),以及上层对应的PC端量化方法(各种论文思路)总结及实现,和最后模型端re-train的方法、策略及指标介绍。
此外,利用PowerPerf(一种专门针对ARM CPU应用性能优化而开发的调试工具)对卷积kernel(汇编算子)各项硬件参数指标进行量化优化也是本文的重点,旨在提炼出一套通用的汇编代码调优方法论,从而使得PowerPerf能适用于所有移动端CPU性能优化场景。
背景尽管模型size在不断地压缩,但是其计算量通常还是有一两百MFLOPS的样子,这个计算量对于目前的(中低端)移动端CPU算力来说,还是有点吃力的,因此模型端做了最大的努力,移动端也要不甘示弱努力加油!
通常移动端加速的方案时分CPU派跟GPU派的,目前在低端机型上arm的mali GPU性能较差,所以基本配备的还是CPU方案,而中高端机其配备的GPU大部分就是高通的了,其性能整体比CPU强劲,因此,目前在不同的定位平台上不同的方案各有 ...
SNPE的环境搭建
[TOC]
概述文章参考:https://developer.qualcomm.com/sites/default/files/docs/snpe/setup.html
环境搭建推荐的Ubuntu18.04
由于我的电脑不支持18.04,所以暂时使用20.04.验证是否可用。
Python环境123456789conda create -n python36 python=3.6# To activate this environment, use## $ conda activate python36## To deactivate an active environment, use## $ conda deactivate
caffe环境的搭建12345(base) frewen@freweniubuntu:~/03.ProgramSpace/20.AILearning/03.Source/caffe$ cp Makefile.config.example Makefile.config(base) frewen@freweniubuntu:~/03.P ...
SNPE的预处理逻辑
[TOC]
概述在Caffe中,图像被呈现为形状的张量(批次X通道X高x宽度, NCHW),其中宽度是更快的尺寸,其次是高度,然后是颜色通道。 这意味着第一颜色通道的所有像素值在存储器中都是连续的,然后是下一个颜色通道的所有像素值,等等。 Caffe在培训过程中在Convert_ImageSet工具中以此格式准备图像。
在SNPE中,必须将图像呈现为形状的张量(批次x高x宽度x通道),其中通道是更快的尺寸。 这意味着单个像素的所有颜色通道的值在存储器中连续,其次是下一个像素的所有颜色值,等等。也就是说SNPE支持一个NHWC的数据格式。
输入前处理的归一化
SNPE的工具箱
[TOC]
snpe-net-run
snpe_bench.py
snpe-caffe-to-dlc
snpe-caffe2-to-dlc
snpe-diagview
snpe-dlc-info
snpe-dlc-diff
snpe-dlc-viewer
snpe-dlc-quantize
snpe-tensorflow-to-dlc
snpe-tflite-to-dlc
snpe-onnx-to-dlc
snpe-pytorch-to-dlc
snpe-platform-validator
snpe-platform-validator-py
snpe-throughput-net-run
snpe-udo-package-generator
snpe-net-run验证SNPE的转换之后的模型,以及量化后的模型
参数声明:
snpe-dlc-viewer生成HTML文件
SNPE针对图像进行预处理的逻辑
[TOC]
概述SNPE的必须要按照Tensor张量处理
SNPE提供工具模型量化
SNPE的平台校验
UDO 自定义网络输出数据
算法模型转换
[TOC]
SNPE的量化:
将图片生成二进制文件。
预处理过后的图片的原始数据
SPNE模型转化我自己写了一个SNPE模型转换的脚本工具:snpe_model_prepare.sh
SNPE模型量化转化过程: