Skip to main content

Command Palette

Search for a command to run...

#dlfs-cpp

Articles tagged with #dlfs-cpp

  1. 《深度学习入门》的cpp实现-ch06: 与学习相关的技巧

    上一篇文章中,我们使用随机正态分布初始化神经网络的权重,SGD的方法更新参数,对于学习率、batch大小、权重衰减率等超参数选择了固定值,这篇文章我们会探讨对于这些做法的改进方案。 由于这一节涉及到众多方法, 并且要求网络结构复杂,不能逐一进行"cpp实现",理解原理并掌握即可(所以请把这篇文章当作读书笔记看待)。 参数的更新 SGD SGD公式如下 $$W \gets W - \eta \frac{\partial L}{\partial W} $$ SGD原理简单,并且在代码上容...

    Aug 24, 20222 min read54
    《深度学习入门》的cpp实现-ch06: 与学习相关的技巧
  2. 《深度学习入门》的cpp实现-ch05: 误差反向传播法

    上一节使用梯度更新的方法求神经网络的参数的梯度,虽然可行,但是耗时很多。这篇文章我们使用计算图(computational graph) 来进行计算损失函数对神经网络参数的梯队。 计算图 计算图是将计算过程用图形表示出来,将计算的的从左向右计算, 即由数据推理出结果,称为正向传播;将从右向左的传播,即由损失函数计算参数梯度,称为反向传播。 好处 使用计算图可以聚焦于局部计算,无论全局计算多么复杂,各个步骤只需要对输入输出做简单的计算。通过节点(算子)间的传递,可以获取全局复杂计算的结果。 使...

    Aug 20, 20223 min read12
    《深度学习入门》的cpp实现-ch05: 误差反向传播法
  3. 《深度学习入门》的cpp实现-ch04: 神经网络的学习

    上一篇文章中,我们加载了预先训练好的手写数字识别模型的权重和偏置,这一篇文章中会剖析下如何从数据中让机器自动学习得到模型参数。 从数据中学习 在传统的机器学习中,是需要人工从数据中提取出可以从输入数据(图像)中提取重要数据的转换器。然后使用这些特征量,将输入数据转换为向量,然后使用机器学习算法(SVM, KNN)等,进行学习,如下图。 对于深度学习,可以直接使用原始数据,进行“端到端”的学习。这里的“端到端”指的是从原始数据到目标结果的意思,因此深度学习也叫端到端的机器学习。 损失函数 在深度...

    Aug 14, 20222 min read28
    《深度学习入门》的cpp实现-ch04: 神经网络的学习
  4. 《深度学习入门》的cpp实现-ch02: 感知机

    定义 感知机(perceptron)是接受多个输入信号,输出一个信号的的算法。 以一个接受两个输入信号的感知机为例子 神经元接受两个输入值(x1, x2), 在不同的输入上具有不同的权重(w1, w2), 神经元会处理输入计算各路总和(w1*x1 + w2*x2),当值高于某个阈值(bias)的时候,神经元被激活。 以数学公式表达就是 实现 可以使用单层感知机实现AND, NAND, OR的门逻辑,只需要调整不同的 w1, w2和 bias. w1、w2称为权重, 是控制着输入信号重要性的...

    Aug 7, 20222 min read1
    《深度学习入门》的cpp实现-ch02: 感知机
  5. 《深度学习入门》的cpp实现-ch01: Eigen的基本操作

    在《深度学习入门》这本书中使用 numpy 进行数据的操作和运算,我们要使用cpp来实现,因此选用了Eigen这个库, 下面是 Eigen 的一些基本操作。 void create_matrix() { // 在Eigen中, 向量和矩阵都是 Matrix 模版类的对象 // 创建矩阵需要Matrix<>构造, 前三个为必须参数,后三个为可选参数 // 第一个参数为数据类型,后两个参数分别为矩阵的行数和列数 Eigen::Matrix<double, 3, 4...

    Aug 6, 20222 min read35
    《深度学习入门》的cpp实现-ch01: Eigen的基本操作