深度学习C++代码
文章平均质量分 86
闵帆
机器学习算法 Java 程序员
展开
-
深度学习基础技术分析4:CNN(含代码分析)
源代码地址为: https://github.com/DeepCompute/cnn/. 这里仅描述我自己的理解.1. 数据数据存放于 mnist/train.format 和 mnist/test.format. 每一行存储一个 28*28 图片, 其像素点为二值化 (0 或 1). 最后一列为决策,即该图片代表的是哪个数字 (0 到 9).2. main 包main包里面有两个类, 用于测试实际数据.2.1 CNNMnist.java用于测试 Mnist 数据,2.2 CNNVoice.原创 2020-12-18 12:30:44 · 1210 阅读 · 0 评论 -
深度学习基础技术分析5: RNN(含代码分析)
程序代码见: https://github.com/garstka/char-rnn-java为了学习它, 我又来逐个方法来分析.这个程序的优势在于:它不依赖于其它的任何包, 因此对于初学者很友好.它使用了比较多的文件, 每个文件仅负责一个类, 这也符合我个人编程习惯.1. math包该包负责一些数学运算.1.1 class Utils按理说这里应该提供很多的静态方法, 但是仅有 3 个.deepCopyOf(double[][] src): 对一个二维数组进行深度拷贝. 这个数组并不原创 2020-12-22 23:12:01 · 544 阅读 · 0 评论 -
深度学习基础技术分析6:LSTM(含代码分析)
1. 模型图示有好几个门。2. 相关技术LSTM 指明了是长处理时序列3. 代码分析程序代码见: https://github.com/garstka/char-rnn-java为了学习它, 我又来逐个方法来分析.// 前向传播核心代码// acts 根据字符串存取实型二维数组public void active(int t, Map<String, DoubleMatrix> acts) { // 获取 t 时刻输入 DoubleMatrix x = acts原创 2021-01-06 12:43:08 · 1047 阅读 · 1 评论 -
深度学习基础技术分析1:感知机
–学而时炫之,不亦说乎!–本系列是我理解深度学习的笔记,如果有读者的话,望能痛斥不当之处,帮助我进步!先来一个例子:某业务员稀里糊涂进了一个公司,第1周工作了40个小时,领了1000元工资;第2周工作了30个小时,领了800元工资;第3周工作了35个小时,领了910元工资。第4周工作了32个小时,请问应领多少工资?解:假设业务员的工资包括底薪与小时工资,则计算式为y=ax+by = ax + by=ax+b其中xxx为工作小时数,aaa为小时工资,bbb为底薪。根据前两周的数据,我们可以列出两个方原创 2020-10-11 23:09:49 · 334 阅读 · 0 评论 -
深度学习基础技术分析2:神经网络(含代码分析)
感知机仅能解决线性的问题,这个局限性使得其无法适应多数的实际应用。因此人们提出了神经网络。如图2.1所示。图2.1 神经网络技术2.1 隐藏层从结构上看,神经网络有多层,比感知机复杂。除了输入层、输出层,还增加了1个或多个隐藏层。输入层与输出层节点的个数由具体应用所确定,这个和感知机没有区别。隐藏层的层数、每层节点个数(这两个可称为神经网络的参数),则对神经网络的效果起到很大作用。对于神经网络的新手玩家而言,针对具体应用,调整这些参数既可能是有意思的活儿,也可能是枯燥的活儿。仅仅增加隐藏层能否增强原创 2020-10-12 17:20:33 · 748 阅读 · 0 评论 -
深度学习基础技术分析3:深度学习
如果我们初始化神经网络的权值为 [0,1][0,1][0,1]之间的随机值,由反向传播算法的数学推导可知,梯度从后向前传播时,每传递一层梯度值都会减小为原来的0.25倍,如果神经网络隐层特别多,那么梯度在穿过多层后将变得非常小接近于0,即出现梯度消失现象;当网络权值初始化为$ (1, +\infty)$区间内的值,则会出现梯度爆炸情况。详细数学分析见文章:http://neuralnetworksanddeeplearning.com/chap5.html 中文译文:深度神经网络为何很难训练https:/原创 2020-10-14 10:22:57 · 333 阅读 · 0 评论 -
深度学习基础技术分析x:顶层视图
根据前面几个贴子的分析,可以从顶层视图对深度学习的方法进行总结。1. 输入对于属性独立的样本,nnn个属性需要nnn个输入端。2. 输出各个输出端一般输出实数,特别是[0,1][0, 1][0,1]区间的实数。3. 节点结构节点也常被称为“神经元”。3.1 加权和感知机使用的运算。3.2 卷积神经网络常用运算。3.3 softmax3.4 多层运算见LSTM.4. 网络拓扑这里主要讨论节点4.1 全连接即上一层的每个节点均与下一层每个节点连接。4.2 Dropout删除原创 2020-10-14 13:02:39 · 283 阅读 · 0 评论 -
深度学习C++代码配套教程(5附1: CNN代码调拭)
CNN 的代码出了问题, 这里把调拭过程展示出来, 希望对读者有用.1. 问题网络训练好后, 对不同的输入产生了相同的输出. 例如, 预测值总是 7.将训练过程的预测值打印, 发现同一批的输出都是相同的, 但不同批的输出可能不同. 网络是在每批数据 forward 和 backPropagation 之后进行 updateParameters, 因此, 预测值主要由网络确定.进一步打印每次预测的分布 (长度为 10 的向量), 发现不同的输入导致的预测有细微的差别. 因此, 输入对输出还是有一定影响原创 2021-02-15 09:38:02 · 403 阅读 · 1 评论 -
深度学习C++代码配套教程(5. CNN 卷积神经网络)
CNN 的 Java 代码在 , 我照着翻译成 C++. 好消息是可以运行了, 坏消息是结果还不正确, 边写贴子边改吧.原创 2021-02-14 15:48:07 · 2111 阅读 · 0 评论 -
深度学习C++代码配套教程(4. ANN 经典神经网络)
经典神经网络用 java 实现只需要不到 100 行, 作为我的风格, 肯定会扯到很多倍.1. 网络结构神经网络由多层构成, 如图 1 所示. 我们先建立单层, 然后获得整个的网络.图 1 神经网络2. MfAnnLayer 类每一层包括输入、输出, 因此图 1 仅有两个 MfAnnLayer.2.1 成员变量成员变量说明如下://The size of the input.//第 1 层的 inputSize 为条件属性数.int inputSize;//The size of th原创 2021-02-14 12:00:00 · 1159 阅读 · 0 评论 -
深度学习C++代码配套教程(3. 数据文件读取)
数据文件管理是每种程序设计语言的基础. 不熟悉的时候会遇到一些坑, 过了就没事儿了.1. 数据格式数据以文本方式存储, 后缀不一定是 txt. 如下是 irist.txt 的前几行5.1,3.5,1.4,0.2,04.9,3.0,1.4,0.2,04.7,3.2,1.3,0.2,04.6,3.1,1.5,0.2,0有如下几点要求:不需要文件头来说明有多少个对象、属性、类别, 这些通过文件扫描自动提取;每行表示一个对象, 对象之间不应有空行;属性之间用逗号分隔, 条件属性均识别为 dou原创 2021-02-14 10:10:35 · 673 阅读 · 0 评论 -
深度学习C++代码配套教程(2. 基础数据操作)
本贴介绍基础数据操作. 代码见 github.com/fansmale/cann.1. Activator 类该类管理不同的激活函数.成员变量有 3 个, 即char activationFunction;double activationGamma;double activationBeta成员方法说明如下://The default constructorActivator();//The constructorActivator(char paraActivationFunc原创 2021-02-13 21:54:12 · 1679 阅读 · 1 评论 -
深度学习C++代码配套教程(1. 总述)
本贴为"深度学习C++实现" github.com/fansmale/cann 的配套教程.1. 动机作为一个程序员,必须时刻把show me the code摆在第一位. 使用C++的原因如下:使用python很容易成为调包侠,不符合我程序员的身份;java虽然是我的最爱, 但它GPU的支持不行, 后期扩展不好办.2. 特点为增强可读性和可维护性,我希望自己的程序具备如下特点:不需要外部包的支持. 已有的深度学习代码, 往往需要各种附加的包, 增加了安装运行的难度. 本程序则从头做起,原创 2021-02-13 12:23:46 · 3375 阅读 · 4 评论