
机器学习
文章平均质量分 70
icfg66
“君子终日乾乾,夕惕若厉,无咎。”
展开
-
rk3399pro部署unet
最近参与一个项目,需要利用unet做焊点检测,unet最终要部署在Rockchip的rk3399pro嵌入式系统里,该系统内部有神经网路加速器,但需要先转成.rknn的格式。RK3399Pro NPU Manual提供了入门指导,里面的RKNN toolkit 包含了样例和转换工具。我的unet版本是参考github头像匹配的pytorch版本。一、出师不利样例提供了torchvision上resnet_18的python版本,能够成功转成rknn格式,代码如下:import numpy as np原创 2021-09-05 20:17:29 · 1993 阅读 · 0 评论 -
炼丹术——可变学习率训练
学习率对网络训练的效果影响很大,一般来看,越到后面,学习率要越小,手动可以调节,但可变学习率会更方便。还有一种更骚的操作是warm up学习,学习率早期先增大预热,再减小。一、不变学习率设定学习率为0.01,训练30个epoch,batch_size=128。发现15个epoch之后训练变缓,因此可以在次改变学习率。最终的训练集86.1%,测试集集83.3%#############1. 数据准备import torchimport torch.nn as nnimport torch.nn.f原创 2021-06-29 09:21:01 · 1422 阅读 · 0 评论 -
ONNX实践
有关ONNX的大体介绍已经很多了,比如ONNX简明教程,但相关的代码要么很复杂,要么太简单,这里将介绍三个方面:如何生成.onnx如何查看.onnx如何转成.json格式一、如何生成.onnximport torchimport torch.nn as nnimport torch.nn.functional as Fclass LeNet(nn.Module): def __init__(self): super(LeNet, self).__init__()原创 2021-06-08 21:48:59 · 477 阅读 · 0 评论 -
tensorpack——Dorefa(二)- alexnet
上次跑通的是Dorefa样例下的svhn-digit-dorefa.py代码,这次准备跑alexnet-dorefa.py,其中碰到了无数的bug,折腾了好几天,终于跑通了!这里只挑选其中几个我花时间最多的bug。一、数据集路径虽然官方代码有描述数据集路径,但对于脑残的我,还是不太理解,还是上图吧:代码默认的目录是~/tensorpack_data/数据集,跑alexnet-dorefa.py的–data路径就是:/root/.keras/tensorpack_data/imagenet/二、cu原创 2021-05-11 21:24:14 · 402 阅读 · 0 评论 -
tensorpack——Dorefa样例
最近在学习量化,想先复现一下Dorefa,官网确实有源代码,貌似挺简单,但当我真正去跑的时候,“坑之大,不知其几千里也!”,特来记录一番。tensorpack需要的环境:Python 3.3+.Python bindings for OpenCV. (这是大坑)TensorFlow ≥ 1.5, < 2首先想到的是在服务器上跑,但服务器是docker镜像,而且全是tf2.0以上,为止奈何?先在自己window下跑通简单的样例吧,之后再想办法一、失败尝试v1windows里刚好装原创 2021-05-07 15:28:03 · 667 阅读 · 2 评论 -
非均匀量化
一、为什么需要非均匀量化?tensorflow,pytorch 等框架下也有量化操作,通常是为了减少权重存储空间,有利于部署移动端。但是基于数字电路的量化只能是均匀的,那么为什么还要研究非均匀量化呢?忆阻器的电导权重是模拟量,本身具备非均匀量化的可能性,而且忆阻器电导的中间值比较不稳定,均匀量化的时候很难精确。神经网络的权重本身是非均匀分布的,在密集的地方多取点,稀疏的地方少取点,量化后的误差会更小。二、如何确定非均匀量化点?选取的量化点有一个中心思想:它们最接近原始的分布。正好,数原创 2021-04-17 21:25:46 · 7015 阅读 · 2 评论 -
CNN训练MNIST数据集tenflow2(下)
接下来利用tflite做量化,其实中间的数据流到底有没量化,我也不清楚。。。一、数据准备# 1.数据准备import tensorflow as tfimport numpy as npmnist = tf.keras.datasets.mnistimg_rows,img_cols = 28,28(x_train_, y_train_), (x_test_, y_test_) = mnist.load_data()x_train = x_train_.reshape(x_train_.sh原创 2021-03-26 22:13:13 · 204 阅读 · 0 评论 -
CNN训练MNIST数据集tenflow2(中)
CNN训练MNIST数据集tenflow2(下)紧接上文CNN训练MNIST数据集tenflow2(上),我们已经做好了训练,分别保存了32bit、16bit、8bit的量化模型。本篇的工作是加载模型,查看增加噪声、权重量化时的精度变化。数据流量化的结果将在下篇介绍。一、加载数据集# 1. 加载数据集import tensorflow as tfimport numpy as npminst = tf.keras.datasets.mnistimg_rows,img_cols = 28,28原创 2021-03-26 22:11:54 · 274 阅读 · 0 评论 -
CNN训练MNIST数据集tenflow2(上)
CNN训练MNIST数据集tenflow2(中)CNN训练MNIST数据集tenflow2(下)背景还是那片nature的文章Fully hardware-implemented memristor convolutional neural network。忆阻器的精度很低,虽然外围的ADC是8bit,但忆阻器实际的精度有4bit就不错了。希望先用32bit浮点数训练网络,然后做量化,比较准确率的下降情况:搭建网络增加噪声量化权重量化数据流测试的环境如下:python 3.7.4,原创 2021-03-26 22:09:23 · 398 阅读 · 0 评论 -
SSE 原子指令加速矩阵运算
利用原子指令加速矩阵运算C++里面有个原子指令库,不需要通过内嵌汇编就可以调用cpu内部SIMD的指令,头文件<xmmintrin.h> 包含SSE库,<emmintrin.h> 包含SSE2库,<pmmintrin.h> 包含SSE3库。原子指令可以利用cpu内部的128位寄存器,同时进行多个数据运算,比如可以同时计算4个float类型数,或2个double类型的数。运行环境:win10 下ubuntu18.04g++ 编译的时候要加关键选项 -msse3 否原创 2020-09-20 11:43:31 · 1211 阅读 · 0 评论 -
MDS降维实例展示
理论推导可以参看图像降维之MDS特征抽取方法样例来自Multidimensional scaling前言MDS的理论推导已经有很多了,基本上来自周志华老师的西瓜书,但其中的细节还有许多不明白,因此希望通过matlab实例来理清所有脉络。需要解释几点1、输入数据输入数据是距离矩阵D,而不是原始的m个d维向量,说明有数据的信息量缺失,但它们的相对位置关系是明确的。实例中的距离矩阵如下:也就是有4组数据,但它们的维度不知道,姑且认为较大吧,我们的任务是找4组二维的数据Z4×2Z_{4\times原创 2020-07-03 11:55:24 · 2185 阅读 · 1 评论