这是动手学深度学习pytorch版学习笔记,其中每次笔记都对应几个章节。
1.深度学习简介
1.1 起源
雅各比·伯努利(1655–1705):伯努利分布
卡尔·弗里德里希·高斯(1777–1855):最小二乘法
罗纳德·费雪(1890–1962):统计学理论
克劳德·香农(1916–2001)的信息论
阿兰·图灵 (1912–1954)的计算理论
唐纳德·赫布(1904–1985):赫布理论
亚历山大·贝恩(1818–1903)和查尔斯·斯科特·谢灵顿(1857–1952):神经网络
绝大多数神经网络都包含以下的核心原则:
1)交替使用线性处理单元与非线性处理单元,它们经常被称为“层”。
2)使用链式法则(即反向传播)来更新网络的参数。
1.2 发展
近十年来深度学习长足发展的部分原因:
1)优秀的容量控制方法,如丢弃法
2)注意力机制解决了另一个困扰统计学超过一个世纪的问题
3)记忆网络 [6]和神经编码器—解释器 [7]这样的多阶设计使得针对推理过程的迭代建模方法变得可能。
4)生成对抗网络的发明
5)分布式并行训练算法+GPU
6)并行计算的能力
7)深度学习框架也在传播深度学习思想的过程中扮演了重要角色。Caffe、 Torch和Theano。TensorFlow。
1.3 成果案例
1)苹果公司的Siri、亚马逊的Alexa和谷歌助手:口头提问
2)精确识别语音
3)物体识别
4)游戏
5)自动驾驶汽车的发展
1.4 特点
1)深度学习的一个外在特点是端到端的训练
2)从含参数统计模型转向完全无参数的模型
3)相对其它经典的机器学习方法而言,深度学习的不同在于:对非最优解的包容、对非凸非线性优化的使用。
4)开源了许多优秀的软件库、统计模型和预训练网络。
2.预备知识
2.1 环境配置
Anaconda/juphyter/pytorch/pycharm
2.2 数据操作
1.创建tensor
2.操作
1)算术操作
在PyTorch中,同一种操作可能有很多种形式。
2)索引
索引出来的结果与原数据共享内存,也即修改一个,另一个会跟着修改。高级选择函数:
3)改变形状
用view()来改变Tensor的形状:
4)线性代数:
3.广播机制
当对两个形状不同的Tensor按元素运算时,可能会触发广播(broadcasting)机制:先适当复制元素使这两个Tensor形状相同后再按元素运算。
4.运算的内存开销