status
Published
slug
dive-into-deep-learning-1
type
Post
category
Technology
date
Apr 8, 2022 → Apr 9, 2022
tags
深度学习
pytorch
summary
《动手学深度学习笔记》第一章的学习笔记
声明:笔记均整理自《动手学深度学习》,仅摘录了个人认为比较重要的部分
基础概念
张量
张量(tensor),实际上就是n维数组,与numpy中的ndarray类似,但多一些重要功能:
- 支持GPU加速计算
- 支持自动微分
张量算法
降维
- 求和某一维度的所有元素
- 计算某一维度的平均值
非降维求和(保持维度/轴数)
- keepdims
- cumsum()
区别几种数学对象和乘法
- 标量、向量、矩阵和张量是线性代数中的基本数学对象。
- 向量泛化自标量,矩阵泛化自向量。
- 标量、向量、矩阵和张量分别具有零、一、二和任意数量的轴。
范数
简单定义(来自百科)
范数(norm)是数学中的一种基本概念。在泛函分析 中,它定义在赋范线性空间 中,并满足一定的条件,即:①非负性;②齐次性 ;③三角不等式。它常常被用来度量某个向量空间(或矩阵)中的每个向量的长度或大小。
范式
范式
Frobenius范数
范数的目标:
- 解决最优化问题:最小化或最大化
- 衡量不同向量之间的距离
微积分
深度学习训练模型的本质:最小化一个损失函数
拟合模型的任务的两个关键问题:
- 优化(optimization):用模型拟合观测数据的过程;
- 泛化(generalization):数学原理和实践者的智慧,能够指导我们生成出有效性超出用于训练的数据集本身的模型。
梯度 & 相关规则
相对于的梯度:
微分多元函数常用规则,其中为n维向量
- 对于所有,都有
- 对于所有,都有
- 对于所有,都有
注意运用链式法则
自动微分
深度学习框架通过自动计算导数,即自动微分
(automatic differentiation)来加快求导。
实际中,根据我们设计的模型,系统会构建一个计算图
(computational graph), 来跟踪计算是哪些数据通过哪些操作组合起来产生输出。 自动微分使系统能够随后反向传播梯度。 这里,反向传播
(backpropagate)意味着跟踪整个计算图,填充关于每个参数的偏导数。
使用pytorch计算梯度
requires_grad表示这个tensor是否要求计算梯度
非标量变量的反向传播
单独计算批量中每个样本的偏导数之和
分离计算
一些小技巧
节省内存
一些操作会为新结果分配内存,但实际上使用时不想要不必要的内存分配
- 执行原地操作
数据预处理-获取特征值
pd.get_dummies()