自己动手写深度学习框架
文章平均质量分 73
嵌入式-老费
计算机科班出身,09年研究生毕业即投入嵌入式开发工作,欢迎付费咨询,微信联系:xiaoxing_fei。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
自己动手写深度学习框架(题外话之硬件转接板)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 训练模型是一方面,使用模型是另外一方面。而且很多时候,模型的使用最终都是部署在嵌入式开发板子上面。这种情况下,就需要嵌入式开发板支持我们运行的模型。此时,去挑选开发板的时候,就会发现大部分时候,功能和接口都是ok的,但是小部分是不ok的。这些不适配的情形包括了camera sensor不合适、mipi lcd对不上、外接接口不好用等等。那么怎么解决这些问题呢,那就是转板。原创 2025-11-30 20:26:56 · 357 阅读 · 0 评论 -
自己动手写深度学习框架(关于训练算力的问题)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 对于个人,或者是小企业开发来说,算力肯定没有大公司那么富裕。那么这个时候,就会有一个问题,算力从哪里来,怎么提高算力。如果提高不了算力,那么应该怎么降低算力要求。这都是个人开发者或者小公司开发人员应该考虑的事情。原创 2025-11-24 19:35:31 · 567 阅读 · 0 评论 -
自己动手写深度学习框架(图像预处理和后处理)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 深度学习中,处理图像的方法一般就是卷积神经网络。网络本身+模型,其实就是就相当于一个黑盒函数,我们输入图像,就可以拿到一定的结果。但是不管是输入的图像,还是拿到的结果,一般都是没有办法直接使用的,有必要做一些预处理和后处理的工作。只有这样做,才是一个完整的产品解决方案。原创 2025-11-23 07:44:51 · 504 阅读 · 0 评论 -
自己动手写深度学习框架(用labelImg标记样本)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 学习深度学习之前,以为自己大部分时间都是在做算法。但是做了之后,才发现自己大部分时间都在清洗数据。和算法相比较,数据本身的价值,可能要比算法还要大。而且除了数据之外,嵌入式部署也是非常重要的,反而是算法,大部分时间就是微调,很少会对网络做大的改动。原创 2025-11-22 19:54:17 · 804 阅读 · 0 评论 -
自己动手写深度学习框架(npu硬件加速)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 深度学习的model训练完之后,一般需要部署到pc或者是嵌入式开发板上面。这个时候,如果部署的环境是arm开发板,本身又没有加速ip的话,那就只能用ncnn来解决。反之,如果有npu的帮助,也就是硬件加速来帮忙,这样会好很多。npu硬件加速的原理,其实就是把常用的算子做一个加速而已。因为很多深度学习的网络特别深,cnn类的算子又特别多,所以用npu加速是非常好的选择。原创 2025-11-22 08:23:57 · 964 阅读 · 0 评论 -
自己动手写深度学习框架(最终的ncnn部署和测试)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 既然前面已经做好了pytorch到onnx,onnx到ncnn的转换,那么接下来就是用ncnn来执行这些model和参数了。有的人也许会问,既然pytorch都训练好model了,为什么不直接用pytorch在板子上跑呢?那是因为训练的时候,一般都是用nvidia显卡跑的,资源非常富裕。但是在嵌入式板子上,需要用cpu、或者npu来优化处理,整体资源要少得多。所以,model本身也要原创 2025-11-21 23:06:19 · 570 阅读 · 0 评论 -
自己动手写深度学习框架(pytorch转ncnn)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 pytorch本身是我们进行ai训练的一个框架,但是训练得到的model最终是要部署到嵌入式板子上面的。这中间就有两种办法,一种是pytorch直接生成onnx文件,然后用ncnn自带的onnx2ncnn将onnx转成我们想要的文件。另外一种方法,就是先生成pt文件,接着用pnnx工具把pt生成我们想要的ncnn文件。原创 2025-11-20 20:30:37 · 729 阅读 · 0 评论 -
自己动手写深度学习框架(pytorch训练第一个网络)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 大多数深度学习的训练框架其实差异不大,都支持不同的激励函数,支持不同的layer定义,支持cuda训练,也支持自动求导、反向传播,更支持参数保存和onnx转换。不管怎么说,用公开的框架训练深度学习模型,要比自己写框架简单很多。下面,就看一下,怎么用pytorch训练第一个模型。原创 2025-11-20 08:24:42 · 543 阅读 · 0 评论 -
自己动手写深度学习框架(从网络训练到部署)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 关于ai,关于深度学习,各方面的资料都比较多。比如说怎么标记,怎么训练,怎么调优,零零散散的资料不少。但是这些技术,或者框架之间是什么关系,怎么从训练到最终部署,这方面谈的不多。今天正好可以花点时间聊一下。如果要自己训练数据,到最终嵌入式部署,要做些什么。原创 2025-11-18 22:35:12 · 603 阅读 · 0 评论 -
自己动手写深度学习框架(ncnn编译)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 如果需要把深度模型部署到嵌入式设备上面,一般来说只有两种办法。一种办法,就是厂家有对应的npu支持框架,这个时候把对应的模型翻译成厂家的框架,直接调用厂家的sdk就可以了。还有一种办法,就是厂家没有专门的gpu/npu/dsp,这个时候如果需要深度学习模型,就只能通过cpu来完成,ncnn框架就是不错的一个选择。原创 2025-11-18 07:25:30 · 605 阅读 · 0 评论 -
自己动手写深度学习框架(pytorch入门)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 自己用python和numpy,虽然可以写出深度学习框架代码。但是实际用的时候,一般还是用tensorflow、pytorch这样的框架来完成。通常来说,训练和部署是分开来的,训练的时候为了速度,一般用gpu加速训练。部署的时候,需要确认终端是否有gpu、npu支持,即需要把模型翻译成厂家支持的形式,才能更好地去应用和部署。原创 2025-11-17 20:01:48 · 395 阅读 · 0 评论 -
自己动手写深度学习框架(数据结果的图表分析)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 深度学习当中,除了张量的计算numpy库之外,另外一个库matplotlib也是非常重要的。因为算法中涉及到的参数选择、算法选择、默认参数设置实在是太多了,所以不同参数之间的效果对比就显得特别重要。因此,如果是用python对深度学习进行开发和训练,一般都是用matplotlib进行开发。常用的方式基本上也就是那几种,学会了就可以。原创 2025-11-16 10:47:32 · 318 阅读 · 0 评论 -
自己动手写深度学习框架(优化深度学习框架)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 用过tensorflow、pytorch的同学都知道,这些框架是可以任意选择激励函数、任意选择优化方法的。要做到这一点,其实并不复杂,只需要把我们之前写的代码流程更新一下。也就是说基本上所有的函数,都要写成class的形式,在这个函数里面再添加forward函数和backward函数。这样推导的时候,就可以使用forward函数,如果是训练的时候,就使用backward函数。原创 2025-11-15 10:53:22 · 422 阅读 · 0 评论 -
自己动手写深度学习框架(反向传播)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 深度学习的原理,远没有它的名字看起来那么复杂。本质上,我们是希望所有的参数都按照梯度的方向去增加,或者是减小,这样可以保证残差方程的积分数值越来越小。那么怎么计算这些梯度数值呢,这就是一个问题。原创 2025-11-14 23:07:03 · 601 阅读 · 0 评论 -
自己动手写深度学习框架(数值法实现神经网络的训练)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们谈到了神经网络的基本原理。一个神经网络其实要运行起来,最主要的就是需要构建残差方程、计算梯度、梯度下降、合理化使用数据集这几个部分。在计算梯度这个部分,即使不会使用反向传播(bp)算法,也没有关系。使用数值法同样可以实现神经网络。下面就来看看,如果是用数值法,一般怎么实现神经网络。原创 2025-11-13 06:26:28 · 671 阅读 · 0 评论 -
自己动手写深度学习框架(数值法计算梯度)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 神经网络就是把很多的激励函数放在一起,它们之间通过简单的计算拼接在一起。而训练,就是通过数据、残差方程、梯度下降的办法,优化每一个激励函数里面的参数。所以,在所有参数更新之前,必须获得所有参数的梯度数值,然后用梯度下降的办法优化这些参数值。因此,计算梯度数值是非常重要的一个工作。原创 2025-11-10 18:55:17 · 396 阅读 · 0 评论 -
自己动手写深度学习框架(神经网络训练的原理)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 大家说神经网络的训练,本身是一个黑盒操作,主要一部分原因就是其中的训练,很多时候没有办法做出合理性解释。也就是说,不知道为什么要按照这个方向去进行收敛,这个方向收敛对最终特征的形成有什么作用,很多时候都是不知道的。假设有这么一个模型,即y=f(x)。这个函数,或者说模型,其实是预先设定好的框架。但是里面的参数是未知的,我们有的只是一堆数据,当下的工作就是用这堆数据把模型里面的参数训练原创 2025-11-09 08:39:52 · 1430 阅读 · 0 评论 -
自己动手写深度学习框架(数据集的训练和测试)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们谈到过感知机,也谈到过神经网络,本质上他们都是通过线性、非线性的方法,来实现特征的分类。这里面的特征,通过传统的线性函数,是根本没有办法做到完全切分的,因此只能进一步通过变换激励函数、加深网络的方法,从高维度去区分他们。那驱动它们进行迭代和优化的,本质上还是数据本身。原创 2025-11-08 10:00:23 · 990 阅读 · 0 评论 -
自己动手写深度学习框架(神经网络的引入)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 最早读神经网络的时候,就觉得这个单词有点夸大其词了。直觉上来说,这里的神经网络,更多的是区别于感知机本身。感知机多使用线性函数进行处理,而神经网络多采用阶跃、sigmoid或者是relu这样的函数来处理。只是后来因为处理图像,引入了cnn;又因为处理声音,引入了rnn。所以,如果从延续性来说,神经网络可以看成是感知机的一个衍生和拓展。原创 2025-11-06 19:34:05 · 587 阅读 · 0 评论 -
自己动手写深度学习框架(感知机)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 所谓的感知机,其实本质上就是一个分类问题。假设一个事物有两个feature,那么可以根据这两个feature,就可以判断当前物体属于哪一个类别。判断的时候,有两种情况,一种是线性可分,一种是线性不可分。原创 2025-11-04 18:35:50 · 579 阅读 · 0 评论 -
自己动手写深度学习框架(快速学习python和关联库)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 既然目前深度学习大部分都是python开发为主,那我们就学习一下python好了。早前还有python2、python3之分,不过现在大部分都是使用python3了。本身python就是一门脚本语言,和我们之前说的lua很像。所有的细节,都放在了后面,用户只需要把这些脚本串起来就可以了。原创 2025-11-03 18:32:25 · 579 阅读 · 0 评论 -
自己动手写深度学习框架(基础)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 现在ai比较火,特别是基于深度学习的ai框架。目前市面上有很多的深度学习框架可以使用,比如说tensorflow,比如说pytorch,或者是caffe等等。但是这些框架的底层原理,大家却未必知道。深度学习和gpu的关系,特别是和cuda的关系,大家也未必了解。毕竟很多细节都被封装好了。使用者只要会使用即可。但是训练出来的model一旦涉及到部署的时候,往往就傻了眼。因此,我们有必要原创 2025-11-03 07:07:33 · 435 阅读 · 0 评论
分享