kpu处理器_深度学习及kpu基础知识

冲冲冲冲冲冲!!! 冲冲冲冲冲冲!!!     2022-12-04     491

关键词:

深度学习及 KPU 基础知识

1. 阅读完本章文档可以了解什么?

了解深度学习一些基础内容

了解 K210 内部 KPU 的特性

了解 KPU 使用过程中可能会遇到的问题,以及问题的解决方法

2. 概述

在本章中,将会为大家介绍深度学习和 K210 内部 KPU 的一些基础知识,以及大家在这部分容易遇到的问题。深度学习及其所涵盖的应用实例是一个非常庞大的领域,没有人能够用一篇文档就把它说得很清楚。希望这篇文档能够让大家对深度学习有一定的了解,产生超出本文档说明外的问题时,能够通过搜索引擎查询等手段解决问题。

3. 关于深度学习

在介绍深度学习前,我们先来介绍神经网络。

​ 什么是神经网络呢?是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。

下面,让我们举个简单例子来说明它干了什么。

其实从某种程度来上说,我们在上小学时,就已经开始运用神经网络的相关思想来解决实际问题了。此时的你,可能满脸问号QAQ。不怕,且听我一一道来。现在,假设有一个方程 y = kx + b 。相信这个方程你一定见过无数次。其实我们可以把这个方程当作神经网络的"模型",未知数"k"当作神经网络的权重,“b"当作神经网络的偏置。此时我们要训练这个神经网络模型,其实训练的过程,就是在数据集上求解全局最优权重和偏置的过程。此时,假设这个方程满足"x=1,y=2”,“x=2,y=4”。这个满足条件便是上文说到的数据集,通过在人脑中,对这个网络的训练,我们可以得知整个网络的最优权重为2,最优偏置为0。此时,便完成了神经网络的训练。

不过值得提出的是,训练的最终目的,永远都是预测。古往今来,那么多神经网络消耗大量算力资源去寻找合适权重和偏置。都是为了能够寻找一个输入数据与输出数据之间的对应关系。一个优秀的神经网络,它的输入数据应该是随机的,不确定的(没有在数据集中被训练过的)。而输出数据则是准确的,可靠的。回到上文,我们训练了神经网络"y = 2x + 0",此时数据集拥有的数据x为"1"和"2"。此时为了评估模型性能,我们输入非数据集数据"3",此时,通过神经网络前向传播,得到了输出值"6"。至此,完成了神经网络模型的预测。

上文用了非常简单的demo来为大家阐述神经网络究竟在干啥,下面让我们一起看看真正的神经网络模型长啥样。

上图为大家展示了一个比较常见的全连接神经网络模型(Fully connected neural network)。对比这个网络结构与之前的"y = 2x + 0"网络,我们可以发现如下不同:

输入数据个数不确定(可以有n个输入)

输出数据个数不确定(可以有n个输出)

参数个数不确定(图中可以有n个全连接层,每个层所包含神经元可以有n个,从而导致参数个数为n)

模型的构造过程可以看作是参数个数的确定过程(当网络层结构确定后,参数个数也确定了),模型的训练过程可以看作是在数据集上全局最优参数的确定过程。模型的预测过程可以看作是输入数据参数 = 预测结果的过程。(代表进行某种运算)

在对神经网络有了一定的了解后,接下来将会介绍深度学习。大家可以把深度学习当做是一种改良版的神经网络算法。它与其他几个名词之间的关系为:机器学习是人工智能的一个子集,深度学习和神经网络又是机器学习的一个子集。

神经网络和深度学习之间的区别,以及深度学习的优点等内容,由于篇幅有限,不能在此一一介绍,大家感兴趣的话,可以通过搜索引擎进行查询。

4. 关于 KPU

K210 SOC 内部搭载一颗 KPU(Neural Network Processor), KPU 即通用的神经网络处理器,它可以在低功耗的情况下实现卷积神经网络计算,时时获取被检测目标的大小、坐标和种类,对人脸或者物体进行检测和分类。

K210 搭载的 KPU 具备以下几个特点:

支持主流训练框架按照特定限制规则训练出来的定点化模型

对网络层数无直接限制,支持每层卷积神经网络参数单独配置,包括输入输出通道数目、输入输 出行宽列高

支持两种卷积内核 1x1 和 3x3

支持任意形式的激活函数

实时工作时最大支持神经网络参数大小为 5.5MiB 到 5.9MiB

非实时工作时最大支持网络参数大小为(Flash 容量-软件体积)

KPU 的内部结构如下图所示。

Maixpy下 KPU 相关 API 及 Demo 可以点击此处查看。

5. KPU使用过程中的常见问题

5.1. KPU能够加载多大的模型?

当k210运行 c 代码时,能够加载 6MB左右的模型。

当运行maixpy(mini)时,能够加载3MB左右的模型。

当运行maixpy(完整版)时,能够加载2MB左右的模型。

5.2. 什么模型能被KPU加载运行?

被nncase转换后的kmodel能够被kpu加载运行。

nncase使用说明点击此处

nncase tflite ops支持点击此处

nncase 常见问题点击此处

5.3. KPU能通过哪些方式加载模型?

加载TF卡中的模型

kpu.load(“/sd/test.kmodel”)

加载Flash中的模型

kpu.load(offset)

此处的offset为模型在flash中的偏移地址,模型可以通过k-flash烧入k210内部flash中

5.4. 报错"memory overflow"怎么办?

出现这个问题,一般是由于模型过大引起的。可以依次尝试如下解决方案:

更换maixpy mini版本固件

进行模型剪枝优化

放弃在maixpy固件下开发,而采用勘智的C SDK进行开发。

5.5. 报错"load error,only support kmodel v3/v4"怎么办?

出现这个问题可以尝试如下解决方案:

如果为flash中加载模型,请确保flash offset填写正确,并保证和maixpy固件没有冲突。

如果是采用nncase 0.2.0进行转换的kmodel V4,请尝试采用nncase 0.1.0进行转换,从而生成kmodel V3。(截至2020/06/30,maixpy对kmodel v4的加载bug还未修复)

5.6. 我想实现不同模型的选择加载(例如按下按钮运行目标分类,再次按下按钮则运行目标检测),应该怎么写程序?

因为flash有限,固建议将所有k210模型放到TF卡内进行加载。因为内部RAM有限,所以当需要切换不同模型进行kpu.load(k210model)前,请先执行kpu.deinit(k210model)对SRAM中的模型进行释放。否则将会报错"memory overflow"。

深度学习100例-常见错误及处理办法(代码片段)

文章目录1.module‘tensorflow._api.v2.data‘hasnoattribute‘AUTOTUNE2.module'tensorflow.keras.preprocessing'hasnoattribute'image_dataset_from_directory来自专栏:《深度学习100例》可以Ctrl+F进行全文查找ÿ 查看详情

ai人工智能机器学习深度学习学习路径及推荐书籍

...线性代数和微积分的,因此需要具备线性代数和微积分的基础知识。机器学习基础知识:了解机器学习的基本概念和算法,如线性回归、逻辑回归、支持向量机、决策树等。深度学习基础知识:了解深度学习的基本概念和算法,... 查看详情

javascript学习笔记及知识点整理_3

1.js的事件冒泡及阻止方法:事件冒泡的概念:在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这... 查看详情

深度学习fpga实现基础知识6(deeplearning(深度学习)学习资料大全及csdn大牛博客推荐)

需求说明:深度学习FPGA实现知识储备来自:时间的诗第一部分:博客大牛(深度学习方向)1、http://blog.csdn.net/zouxy09研究方向:机器学习、计算机视觉、人机交互和人工智能等领域作品:DeepLearning(... 查看详情

深度学习基础阶段

IDH_1000=1.1课程介绍&机器学习介绍.html;EvernoteExportIDH_1001=1.2深度学习(DeepLearning)介绍.html ;EvernoteExportIDH_1002=2基本概念(BasicConcepts).html ;EvernoteExportIDH_1003=3.1决策树(decisiontree)算法.html ;EvernoteExpo 查看详情

深度学习及pytorch基础

【任务一】视频学习心得及问题总结根据下面三个视频的学习内容,写一个总结,最后列出没有学明白的问题。【任务二】代码练习在谷歌Colab上完成代码练习中的2.1、2.2、2.3、2.4节,关键步骤截图,并附一些自己的想法和解读... 查看详情

头歌里的课程视频怎样观看

...算环境支撑;-有一定python编程基础以及概率统计的数学基础知识就可以学习;1-课程简介头歌在线实践教学平台下载,实践教学平台管理系统《深度学习及TPU平台实践》课程主页本课程以实践驱动的方式,一步步带领大家直观学... 查看详情

深度学习基础:5.cifar10数据集分类及gpu使用实例(代码片段)

前言上篇博文整理了如何用Pytorch搭建一个基本网络模型,本篇进行一个图像分类任务实操。相关代码主要参考自官网教程:https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html#sphx-glr-beginner-blitz-cifar10-tutorial-py数据集简介CI... 查看详情

深度学习教程|深度学习的实用层面

本篇讲解如何优化神经网络模型,包括Train/Dev/Testsets的切分和比例选择,Bias和Variance的相关知识,防止过拟合的方法,规范化输入以加快梯度下降速度和精度,梯度消失和梯度爆炸的原因及处理方法,梯度检查。本篇讲解如何优... 查看详情

《tensorflow实战google深度学习框架(第二版)》学习笔记及书评(代码片段)

《TensorFlow实战Google深度学习框架(第二版)》学习笔记文章目录《TensorFlow实战Google深度学习框架(第二版)》学习笔记写在前面1.TensorFlow图像处理函数学习总结2.TensorFlow图像预处理完整样例3.TensorFlow多线程输入... 查看详情

python深度学习:python数据处理及可视化(读书笔记)(代码片段)

老铁们,我们Python的深度学习开始了,第一篇正式的文章就是数据处理和可视化,我们开始吧!数据处理与可视化一、NumPy的初步使用二、Matplotlib包的使用--图形化数据处理三、深度学习理论方法--相似度计算(可... 查看详情

tensorflow+keras深度学习人工智能实践应用_林大贵

 编辑推荐浅入深地讲解Keras与TensorFlow深度学习类神经网络使用实际的数据集配合范例程序代码介绍各种深度学习算法,并示范如何进行数据预处理、训练数据、建立模型和预测结果 内容简介本书提供安装、上机操作指南... 查看详情

深度学习方法及应用——学习笔记

学习教材是邓力和俞栋写的“深度学习方法及应用”,是一本综述性的书。1、深度学习全称应该是深度结构学习,采用多层的、非线性信息处理方法,大概就是结构比较深的神经网络算法,也是包括输入层、隐层(多层)... 查看详情

深度学习基础:2.最小二乘法

最小二乘法代数表示方法假设多元线性方程有如下形式:f(x)=w1x1+w2x2+...+wdxd+bf(x)=w_1x_1+w_2x_2+...+w_dx_d+bf(x)=w1​x1​+w2​x2​+...+wd​xd​+b令w=(w1,w2,...wd)w 查看详情

深度学习必备----python中数据处理与特征等基础知识(代码片段)

  1.对数据进行类型转化importpandasaspd s=pd.Series(['1','2','4.7','pandas','10'])s.astype(float,errors='ignore')------------------------可以将s转化为float类型&#x 查看详情

深度学习系列资料总结

...智能学习网站,内容包括人工智能基础、机器学习、深度学习神经网络等,详细介绍各部分概念及实战教程,通俗易懂,非常适合人工智能领域初学者及研究者学习。➡️点击跳转到网站。深度学习系列最全资料... 查看详情

[人工智能-深度学习-8]:神经网络基础-机器学习深度学习模型模型训练

...目录第1章白话机器学习第2章机器学习的模型与步骤 2.1 深度学习与机器学习2.2 机器学习的模型第3章建模步骤1-1&# 查看详情

中公的深度学习培训怎么样?有人了解吗?

深度学习作为实现机器学习的技术,拓展了人工智能领域范畴,主要应用于图像识别、语音识别、自然语言处理。推动市场从无人驾驶和机器人技术行业扩展到金融、医疗保健、零售和农业等非技术行业,因此掌握深度学习的AI... 查看详情