侯捷cpp-oop(下) 笔记
C++程序设计兼谈对象模型-导读 conversion function, 转换函数 class Fraction { public: Fraction(int num, int den=1) : m_numerator(num), m_denominator(den){}; operator double() const { return 1.0 * m_numerator / m_denominator; } private: int m_n...

Search for a command to run...
C++程序设计兼谈对象模型-导读 conversion function, 转换函数 class Fraction { public: Fraction(int num, int den=1) : m_numerator(num), m_denominator(den){}; operator double() const { return 1.0 * m_numerator / m_denominator; } private: int m_n...

头文件与类声明 Classes 两个分类 Class without pointer member(s): complex Class with pointer member(s): string 也可以分为 Object-Based vs Object Oriented 构造函数 inline函数 函数如果在 class 内定义完成,则自动成为 inline 候选人. 也可以在class 外部定义,方法需要增加inline 关键字。 constructor(ctor, 构造函数) ...

类型限制了一个变量可以接受的有效值的集合,对数据可以进行的操作,数据的意义。 空类型(The empty type) 根据类型的定义,类型定义了可以接受的有效值集合,那么这个集合有没有可能为空?答案是有可能的,TypeScirpt 的 never 就是这种类型。 需要注意的是,空类型不同与 void, 后者是有效值集合当中只有一个值,但这个值没有任何意义。而空类型的有效值集合本身是空的。 使用场景 控制流分析 在函数调用时,标志一个函数不会返回任何值: 在调用过程中抛出异常、死循环或者程序崩溃...

不同于 Chapter03 从系统的角度来处理数据,这一章从数据科学的视角来处理数据。这章的标题是“training Data”,而非“training dataset”,因为 数据集(dataset) 意味着有限(finite)和固定(stationary), 而现实生产环境中的 数据(data) 通常是 无限 并且 不固定 的。 抽样 抽样方法在 ML 项目的生命周期中无处不在,在这一节中,我们使用生成训练数据作为例子。 那为什么需要抽样?直接使用全部数据不可以吗? 首先,在现实世界中,并不...

这一章大部分内容和DDIA很相似,作者也说 “If you’re already familiar with data systems, you might want to move directly to Chapter 4 to learn more about how to sample and generate labels to create training data. If you want to learn more about data engineering from a...

业务和机器学习目标 对于大多数的算法/开发工程师,大部分关注机器学习模型的指标: 准确率, F1 score, 推理时耗等等,并且热衷于使用大量的资源(数据,计算量,开发时间)来获得微小的提升。 然而对于大部分的公司,并不关心以上的机器学习指标,诺贝尔奖获得者 Milton Friedman 指出,大部分公司的关心的是“能否提升股东们的收益”。 任何业务的终极目标都是这个,提升用户满意度,增加用户市场,提升点击率等等目标,都直接或者间接和它相关。 对于一个在商业组织成功的机器学习模型,如果想要...

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

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

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