Deep Learning 读书随笔(一)

线性代数部分


线性代数是深度学习的基础前置知识之一,下面就线性代数的一些知识做一些总结。

标量、向量、矩阵和张量

标量(scalar):一个单独的数,就是一个标量。

向量(vector):一个向量是一列数,这些数是有序排列的。可以用 x i x_{i} xi 来表示向量中的元素。如果一个向量有 n n n 个元素,那么这个向量属于实数集 R \mathbb{R} R n n n 次笛卡尔乘积构成的集合。

x = [ x 1 x 2 x 3 . . . x n ] \boldsymbol{x}= \begin{bmatrix} x_{1}\\x_{2}\\x_{3}\\...\\x_{n} \end{bmatrix} x=x1x2x3...xn

符号和约定: 我们可以定义一个包含下标索引的集合 S = { 1 , 3 , 4 } S=\{1,3,4 \} S={1,3,4},用 x S x_{S} xS来指定 x 1 , x 3 , x 4 x_{1},x_{3},x_{4} x1,x3,x4 ,用 x − S x_{-S} xS来指定除 x 1 , x 3 , x 4 x_{1},x_{3},x_{4} x1,x3,x4 以外的元素。

矩阵(matrix):矩阵是一个二维数组,其中每个元素都能被两个索引所确定。如果一个实数矩阵 A A A的高度为 m m m,宽度为 n n n ,那么我们说 A ∈ R m × n \boldsymbol{A}\in\mathbb{R}^{m \times n} ARm×n。我们使用不加粗的斜体形式来表示元素,索引之间用逗号隔开。
A = [ A 1 , 1 . . . A 1 , n . . . . . . A m , 1 . . . A m , n ] \boldsymbol{A}=\begin{bmatrix} A_{1,1} &&...&&A_{1,n} \\ ...& & &&...\\ A_{m,1}&&... & &A_{m,n} \end{bmatrix} A=A1,1...Am,1......A1,n...Am,n

符号和约定: 我们使用“ : ”来表示单个坐标轴的全体。例如 A 1 , : A_{1,:} A1,:表示 A 1 , 1 , A 1 , 2 , A 1 , 3 , . . . , A 1 , n A_{1,1},A_{1,2},A_{1,3},...,A_{1,n} A1,1,A1,2,A1,3,...,A1,n ,即表示第一行所有元素。

A i , : A_{i,:} Ai,: 表示第 i i i行所有元素
A : , j A_{:,j} A:,j 表示第 j j j列所有元素

张量(tensor):在某些情况下,会讨论坐标超过两维的数组。一般的,一个数组中的元素分布在若干维度坐标的规则网络中,我们称之为张量。我们使用 A 来表示张量 “A”。张量A中坐标为 ( i , j , k ) (i,j,k) (i,j,k)的元素记为 A i , j , k A_{i,j,k} Ai,j,k

矩阵


矩阵的基本定义和运算

转置(transpose):是矩阵的重要操作之一,我们将矩阵 A \boldsymbol{A} A的转置表示为 A T \boldsymbol{A^{T}} AT
( A T ) i , j = A j , i (\boldsymbol{A^{T}})_{i,j}=A_{j,i} (AT)i,j=Aj,i
从直观上看,矩阵的转置是以对角线为轴的两边元素翻转互换,如图。

矩阵的转置
矩阵相加: 如果两个矩阵形状相同,那么他们就能相加。两矩阵相加就是指对应元素相加。
C = A + B \boldsymbol{C=A+B} C=A+B C i , j = A i , j + B i , j C_{i,j}=A_{i,j}+B_{i,j} Ci,j=Ai,j+Bi,j

矩阵与标量相乘、相加: 只需将矩阵上的每一个元素与该标量相乘、相加。
D = a ⋅ B + c \boldsymbol{D=} a \cdot \boldsymbol{B} +c D=aB+c D i , j = a ⋅ B i , j + c D_{i,j}=a\cdot B_{i,j}+c Di,j=aBi,j+c

在实际计算中,我们允许矩阵和向量相加,然后生成另一个矩阵: C = A + b \boldsymbol{C=A+b} C=A+b ,其中 C i , j = A i , j + b j C_{i,j}=A_{i,j}+b_{j} Ci,j=Ai,j+bj,也就是说,我们直接将向量 b \boldsymbol{b} b和矩阵 A \boldsymbol{A} A的每一行相加。这种隐式地将向量 b \boldsymbol{b} b直接复制到很多位置的方式,成为广播(broadcasting)。
注:Python中有这种机制,能实现矩阵计算的简化

矩阵和矩阵、向量相乘
矩阵乘积(matrix product):两个矩阵的乘积结果是一个新矩阵。矩阵能相乘的条件是,矩阵 A \boldsymbol{A} A列数 B \boldsymbol{B} B行数相等。若矩阵 A \boldsymbol{A} A的形状为 m × n m\times n m×n ,矩阵 B \boldsymbol{B} B的形状为 n × p n\times p n×p,那么结果得到的矩阵 C \boldsymbol{C} C的形状为 m × p m \times p m×p
C = A B \boldsymbol{C=AB} C=AB
乘法的运算操作定义为: C i , j = ∑ k A i , k B k , j C_{i,j}=\sum_{k} A_{i,k}B_{k,j} Ci,j=kAi,kBk,j
直观地说, C i , j C_{i,j} Ci,j是矩阵 A \boldsymbol{A} A的第i行和矩阵 B \boldsymbol{B} B的第j列元素对应相乘再求和。

要注意,简单地将两个矩阵(同阶矩阵)的对应元素对应相乘不是矩阵的乘相乘,这样的运算我们称之为元素对应乘积(element-wise product)或者哈达玛积(Hadamard product),记为 A ⨀ B \boldsymbol{A \bigodot B} AB

矩阵乘积满足分配率和结合律:
A ( B + C ) = A B + A C \boldsymbol{A(B+C)=AB+AC} A(B+C)=AB+AC
A B C = A ( B C ) \boldsymbol{ABC=A(BC)} ABC=A(BC)
需要注意,矩阵乘积并非所有都满足交换律。

相同维度的向量 x x x y y y的点积(dot product)可以看成是矩阵乘积 x T y x^{T}y xTy。因此,矩阵乘积计算步骤中的 C i , j C_{i,j} Ci,j可以看成是矩阵 A 和 B A和B AB i行与j列的点积。

矩阵乘积的转置:
( A B ) T = ( B T A T ) \boldsymbol{(AB)^{T}=(B^{T}A^{T})} (AB)T=(BTAT)

注意,标量的转置是其自身。我们可以有如下等式,它可以帮助我们化简一些式子。
x T y = ( x T y ) T = y T x \boldsymbol{x^{T}y=(x^{T}y)^{T}=y^{T}x} xTy=(xTy)T=yTx

向量和矩阵构成线性方程组:
我们可以通过如下的形式表示一个方程组:
A x = b \boldsymbol{Ax=b} Ax=b
即为:
A i , : x = b i \boldsymbol{A_{i,:}x}=b_{i} Ai,:x=bi
更明确点,可以展开为:
A 1 , 1 x 1 + A 1 , 2 x 2 + . . . + A 1 , n x n = b 1 \boldsymbol{A_{1,1}x_{1}+A_{1,2}x_{2}+...+A_{1,n}x_{n}=}b_{1} A1,1x1+A1,2x2+...+A1,nxn=b1 A 2 , 1 x 1 + A 2 , 2 x 2 + . . . + A 2 , n x n = b 2 \boldsymbol{A_{2,1}x_{1}+A_{2,2}x_{2}+...+A_{2,n}x_{n}=}b_{2} A2,1x1+A2,2x2+...+A2,nxn=b2 . . . ... ... A 3 , 1 x 1 + A 3 , 2 x 2 + . . . + A 3 , n x n = b n \boldsymbol{A_{3,1}x_{1}+A_{3,2}x_{2}+...+A_{3,n}x_{n}=}b_{n} A3,1x1+A3,2x2+...+A3,nxn=bn

可见,矩阵提供了一个简洁的线性方程组表示。对强迫症玩家很友好

单位矩阵和逆矩阵


单位矩阵
单位矩阵(identity matrix):任意一个向量和单位矩阵作乘积运算,该向量保持不变。我们将维持n维向量保持不变的单位矩阵记为 I n \boldsymbol{I_{n}} In,给出如下定义:
I n x = x , ∀ x ∈ R n \boldsymbol{I_{n}x=x},\forall \boldsymbol{x} \in \mathbb{R}^{n} Inx=x,xRn

单位矩阵的主对角线都是1,其余位置都为0,如图,给出一个3阶单位矩阵的例子,它能保持任意一个3阶向量和它相乘后不变。
I 3 = [ 1 0 0 0 1 0 0 0 1 ] \boldsymbol{I_{3}}=\begin{bmatrix}1&0&0 \\0&1&0 \\0&0&1 \end{bmatrix} I3=100010001

逆矩阵
逆矩阵(matrix inversion):逆矩阵十分重要,其地位相当于实数概念里面的倒数。我们将矩阵 A \boldsymbol{A} A的逆,记为 A − 1 \boldsymbol{A}^{-1} A1,满足以下条件:
A A − 1 = I n \boldsymbol{AA^{-1}=I_{n}} AA1=In
逆矩阵可用于求解线性方程组,其求解过程如下:
A x = b \boldsymbol{Ax=b} Ax=b A − 1 A x = A − 1 b \boldsymbol{A^{-1}Ax=A^{-1}b} A1Ax=A1b I n x = A − 1 b \boldsymbol{I_{n}x=A^{-1}b} Inx=A1b x = A − 1 b \boldsymbol{x=A^{-1}b} x=A1b

可见,若能找到一个逆矩阵 A − 1 \boldsymbol{A^{-1}} A1,我们就能解线性方程组。
注意:并不是所有的矩阵都存在逆矩阵,对于这些没有逆矩阵的矩阵,我们可以求其伪逆矩阵,使用伪逆矩阵能尽可能接近真正的解

线性相关和生成子空间


若矩阵 A − 1 \boldsymbol{A^{-1}} A1存在,那么对于线性方程组 A x = b \boldsymbol{Ax=b} Ax=b就存在唯一的解。但是,对于一些情况而言,方程组的解并不存在,或者有无穷多个解。

为了分析方程组有多少个解,这里给出两种思路:
1.使用相关定理:
通过比较系数矩阵和增广矩阵的秩(rank),可以得出方程组的解有多少个的结论。

如果系数矩阵的秩r(A)小于增广矩阵的秩r(A,b),r(A)<r(A,b),那么方程组无解。
如果系统矩阵的秩小于方程组未知数个数,r(A)=r(A,b)<n,那么方程组有多个解。
如果系统矩阵的秩等于方程组未知数个数,r(A)=r(A,b)=n,那么方程组有唯一解。

2.书中给出了另一种思路:
可以将 A \boldsymbol{A^{}} A的列向量看作是从原点(origin)(零向量)出发的不同方向,向量 x \boldsymbol{x} x中的每一个元素则指导着应该沿着这些方向走多少距离,即 x i {x_{i}} xi表示要沿着第 i i i个列向量(方向)走多远:
A x = ∑ i x i A : , i \boldsymbol{Ax=\sum_{i}}x_{i}\boldsymbol{A_{:,i}} Ax=ixiA:,i
(个人的理解:矩阵其实是一种运动的表示形式(空间的线性变换),而向量则是一个对象,对向量施加以运动就是矩阵乘以向量)

这种操作被称为线性组合(linear combination)。就形式上,一组向量的线性组合,是对应的常数系数与每个向量的乘积和:
∑ i c i v ( i ) \sum_{i}c_{i}\boldsymbol{v^{(i)}} iciv(i)
一组向量的生成子空间(span)是原始向量线性组合后所能达到的点的集合。设 a 1 , a 2 , a 3 , . . . a s ∈ R n \boldsymbol{a_{1},a_{2},a_{3},...a_{s} \in \mathbb{R}^{n}} a1,a2,a3,...asRn,则这组向量的所有线性组合得到的向量集合U: U = { x ∣ x = k 1 a 1 + k 2 a 2 + + . . . + k s a s , k 1 , k 2 , . . . , k s ∈ R } U=\{ \boldsymbol{x | x=}k_{1}\boldsymbol{a_{1}}+k_{2}\boldsymbol{a_{2}}++...+k_{s}\boldsymbol{a_{s}} , k_{1},k_{2},...,k_{s} \in \mathbb{R}\} U={xx=k1a1+k2a2++...+ksas,k1,k2,...,ksR}
集合 U U U即为向量组 { a 1 , a 2 , a 3 , . . . a s } \{\boldsymbol{a_{1},a_{2},a_{3},...a_{s} \}} {a1,a2,a3,...as}所生成的子空间。

确定 A x = b \boldsymbol{Ax=b} Ax=b是否有解,就相当于确定 b \boldsymbol{b} b 是否在 A \boldsymbol{A} A 的列向量的生成子空间中。这个特别的生成子空间,被称为 A \boldsymbol{A} A列空间(column space)或者 A \boldsymbol{A} A值域(range)。

在向量组中,有部分向量能被其他向量所表示,那么这些向量就是“冗余的”,这种冗余被称为线性相关(linear dependence),如果向量组中任意一个向量都不能被其他向量表示,那么我们称这组向量是线性无关的(linearly independent)。这也意味着,如果一个矩阵的列空间能覆盖整个 R m \mathbb{R}^{m} Rm,那么它至少包含一组 m m m个线性无关的向量。

一个列向量线性相关的方阵被称为奇异(singular)方阵,奇异的方阵没有逆矩阵

范数


我们使用范数(norm)的函数来衡量向量的大小,对于 L p L^{p} Lp范数定义如下:
∥ x ∥ p = ( ∑ i ∣ x i ∣ p ) 1 / p \|\boldsymbol{x} \|_{p}=(\sum_{i}|x_{i}|^{p})^{1/p} xp=(ixip)1/p
其中 p ∈ R , p ⩾ 1 p \in \mathbb{R},p\geqslant 1 pRp1

范数是将向量映射到非负值的函数。从直观上看,向量x的范数衡量的是原点到点x的距离。若要给出更严格的定义,范数是满足如下性质的函数:
f ( x ) = 0 ⇒ x = 0 f(\boldsymbol{x})=0 \Rightarrow \boldsymbol{x}=0 f(x)=0x=0

f ( x + y ) ≤ f ( x ) + f ( y ) f(\boldsymbol{x+y})\leq f(\boldsymbol{x})+ f(\boldsymbol{y}) f(x+y)f(x)+f(y)

∀ a ∈ R , f ( a x ) = ∣ a ∣ f ( x ) \forall a \in\R,f(a\boldsymbol{x})=|a|f(\boldsymbol{x}) aR,f(ax)=af(x)

p = 2 p=2 p=2时, L 2 L^{2} L2范数被称为欧几里得范数(Euclidean norm)。它的几何意义是原点出发到向量 x \boldsymbol{x} x确定的点的欧几里得距离。在机器学习中,欧几里得范数经常会出现,所以常常简化为 ∥ x ∥ \| x\| x

最大范数
最大范数(max norm)指的是 L ∞ L^{\infty} L范数,这个范数表示向量中具有最大幅值的元素的绝对值:
∥ x ∥ ∞ = m a x ∣ x i ∣ \|x\|_{\infty}=max|x_{i}| x=maxxi

Frobenius范数
我们希望衡量一个矩阵的大小,可以使用Frobenius范数,对矩阵所有元素平方求和再开方(和向量的L2范数类似):
∥ A ∥ F = ∑ i , j A i , j 2 \|\boldsymbol{A}\|_{F}=\sqrt{\sum_{i,j}A^{2}_{i,j}} AF=i,jAi,j2

两个向量的点积也可用范数来表示: x T y = ∥ x ∥ 2 ∥ y ∥ 2 cos ⁡ θ \boldsymbol{x^{T}y=\| x \|_{2}\|y\|_{2}\cos \theta } xTy=x2y2cosθ

特殊类型的矩阵和向量


对角矩阵(diagonal matrix):主对角线非零,其他位置全是零。单位矩阵 I I I就是个对角矩阵。我们使用 d i a g ( v ) diag(\boldsymbol{v}) diag(v)来表示对角元素由向量 v \boldsymbol{v} v给出的对角方阵。对角方阵存在逆矩阵,当且仅当主对角线上的元素都是非零值时。 d i a g ( v ) − 1 = d i a g ( [ 1 / v 1 , . . . , 1 / v n ] T ) diag(\boldsymbol{v})^{-1}=diag([1/v_{1},...,1/v_{n}]^{T}) diag(v)1=diag([1/v1,...,1/vn]T)

对称矩阵(symmetric matrix):它的转置是其自身。
A = A T \boldsymbol{A}=\boldsymbol{A}^{T} A=AT

正交矩阵(orthogonal matrix):指行向量和列向量分别标准正交的方阵:
A A T = A T A = I \boldsymbol{AA^{T}=A^{T}A=I} AAT=ATA=I
也就意味着:
A − 1 = A T \boldsymbol{A^{-1}=A^{T}} A1=AT

向量正交 x T y = 0 \boldsymbol{x^{T}y=0} xTy=0,则称这两个向量正交(orthogonal)。如果这两个向量都不是零向量,那么他们之间的夹角是90度。在 R n \R^{n} Rn中至多有 n n n个范数非零的向量相互正交。如果这些向量相互正交,且范数都为1,我们称他们是标准正交(orthonormal)的,也就是它们是一组标准正交基

特征分解


分解是研究一个复杂事物的必备手段,就像画画也需要将复杂的物体分割成简单的几何体那样。从复杂的事物分解出最基本的,通用的简单事物,以便于我们能快速理解和拓展应用。

在整数中,我们可以将整数分解为质因数,例如:12=2x2x3,我们就可以知道12能被2或3整除,而不能被5整除。在矩阵中,我们也可以通过分解虎阵来发现矩阵那些不明显的性质。

特征分解是最常用的矩阵分解之一,它能将矩阵分解成一组特征向量特征值,以此来反应矩阵的一些性质。

特征向量:方阵 A \boldsymbol{A} A的特征向量(eigenvector):是指一个向量 v \boldsymbol{v} v在于 A \boldsymbol{A} A相乘以后,相当于对该向量进行线性缩放。
A v = λ v \boldsymbol{Av=}\lambda\boldsymbol{v} Av=λv

其中, λ \lambda λ被称为特征向量 v \boldsymbol{v} v对应的特征值。(我们也可以定义左特征向量,但常用的还是右特征向量)

特征向量我们通常只考虑单位特征向量

假设矩阵 A \boldsymbol{A} A有n个线性无关的特征向量 { v 1 , . . . , v n } \{ \boldsymbol{v}^{1},...,\boldsymbol{v}^{n}\} {v1,...,vn}对应特征值 { λ 1 , . . . , λ n } \{\lambda_{1},...,\lambda_{n} \} {λ1,...,λn},令矩阵 V = [ v 1 , . . . , v n ] \boldsymbol{V=[\boldsymbol{v}^{1},...,\boldsymbol{v}^{n}]} V=[v1,...,vn],向量 λ = [ λ 1 , . . . , λ n ] \boldsymbol{\lambda}=[\lambda_{1},...,\lambda_{n}] λ=[λ1,...,λn],那么矩阵 A \boldsymbol{A} A的特征分解可以记为:
A = V d i a g ( λ ) V − 1 \boldsymbol{A=Vdiag(\lambda)V^{-1}} A=Vdiag(λ)V1

注意,不是每一个矩阵都能分解成特征向量和特征值,但对于实对称矩阵来说,它必定可以进行特征分解,得到实特征向量和实特征值。
A = Q Λ Q − 1 \boldsymbol{A=Q\Lambda Q^{-1}} A=QΛQ1

其中 Q \boldsymbol{Q} Q A \boldsymbol{A} A的特征向量构成的正交矩阵, Λ \boldsymbol{\Lambda} Λ 是特征值对角矩阵。由于 Q \boldsymbol{Q} Q是正交矩阵,我们可以将 A \boldsymbol{A} A看做沿着向量 v i \boldsymbol{v^{i}} vi伸缩 λ i \lambda_{i} λi倍的空间。
2

奇异值分解

矩阵分解的另一种方式,即奇异值分解(singular value decomposition,SVD),它将矩阵分解成奇异向量(singular vector)和奇异值(singular value)。每个实数矩阵都有一个奇异值分解,但不一定有特征分解。例如,非方阵矩阵就没有特征分解,我们只能用奇异值分解。

奇异值分解有着类似于特征分解的形式:
A = U D V T \boldsymbol{A=UDV^{T}} A=UDVT

其中,若 A \boldsymbol{A} A是一个 m × n m\times n m×n的矩阵,那么 U \boldsymbol{U} U m × m m \times m m×m方阵, D \boldsymbol{D} D m × n m\times n m×n矩阵, V V V n × n n \times n n×n矩阵。矩阵 U \boldsymbol{U} U V \boldsymbol{V} V都定义为方阵。

注意:矩阵D不一定是方阵

矩阵 D D D:对角线上的元素被称为奇异值
矩阵 U U U:其列向量被称为左奇异向量
矩阵 V V V:其列向量被称为右奇异向量

SVD最有用的性质是将求逆拓展到非方阵矩阵上。

伪逆


对于非方阵而言,没有逆矩阵的定义。对于下面问题:
A x = y \boldsymbol{Ax=y} Ax=y
我们希望能找到一个逆矩阵 B \boldsymbol{B} B,通过左乘逆矩阵求解。
x = B y \boldsymbol{x=By} x=By
但事事不总能如人愿,有时候我们无法用唯一的映射将A映射到B。
(个人的理解:如果这个矩阵是将高维空间向低维空间压缩的一个变换,那么我们无法找到它的逆,因为低纬度是无法一 一映射到高纬度的)

对于这种问题的一种解法是 Moore-Penrose 伪逆,这是一类广义逆
矩阵 A \boldsymbol{A} A伪逆定义如下:
A + = lim ⁡ a → 0 ( A T A + a I ) − 1 A T \boldsymbol{A^{+}=\lim_{a \to 0}(A^{T}A+aI)^{-1}A^{T}} A+=a0lim(ATA+aI)1AT
实际计算中,我们使用如下公式:

A + = V D + U T \boldsymbol{A^{+}=VD^{+}U^{T}} A+=VD+UT

其中, U , D , V \boldsymbol{U,D,V} U,D,V是矩阵奇异值分解后得到的。对角矩阵 D \boldsymbol{D} D的伪逆 D + \boldsymbol{D^{+}} D+是非零元素取到数转置

当A的列数多于行数时,使用伪逆解法得到的解是所有可行解中欧几里得范数最小的。
当A的列数小于行数时,方程可能无解,此时通过伪逆解得的x,使得Ax和y的欧几里得距离最小,即Ax尽可能接近y。

迹运算


(trace)是矩阵主对角元素的和。记为:
T r ( A ) = ∑ i A i , i \boldsymbol{Tr(A)=\sum_{i}}A_{i,i} Tr(A)=iAi,i

迹运算提供了另一种描述Frobenius范数的方法:
∥ A ∥ F = T r ( A A T ) \|A\|_{F}=\sqrt {Tr(\boldsymbol{AA^{T}})} AF=Tr(AAT)

迹的良好性质:
t r ( A ) = t r ( A T ) tr(A)=tr(A^{T}) tr(A)=tr(AT) A的迹和A转置的迹相等
t r ( A B C ) = t r ( C A B ) = t r ( B C A ) tr(ABC)=tr(CAB)=tr(BCA) tr(ABC)=tr(CAB)=tr(BCA) 矩阵最后一个挪到前面,迹不变
a = t r ( a ) a=tr(a) a=tr(a) 常数的迹是其本身

行列式

行列式,记为det(A),是将方阵A映射到实数的函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习笔记v5是一本关于深度学习的学习资料,下面我将用300字来回答有关这本笔记的内容。 深度学习是机器学习领域的一个重要分支,它主要研究模拟人脑神经网络的算法和模型,用于实现复杂的学习任务。深度学习在图像识别、语音识别和自然语言处理等领域取得了很多重要的突破,成为了人工智能领域的热点研究方向。 深度学习笔记v5中,首先介绍了深度学习的基本概念和原理。笔记详细解释了神经网络结构、前向传播、反向传播以及梯度下降等基本概念和算法。这些内容帮助读者理解深度学习的基本原理和工作机制。 接着,笔记介绍了常用的深度学习框架,如TensorFlow和PyTorch。这些框架提供了丰富的工具和函数,使得深度学习的开发变得更加简单和高效。笔记详细介绍了如何使用这些框架进行模型训练和评估。 此外,笔记还包含了一些深度学习的经典应用案例。这些案例涵盖了图像分类、目标检测、语音识别等多个领域。通过这些案例,读者可以深入了解深度学习在实际问题中的应用,并学习如何利用深度学习解决现实世界中的复杂任务。 最后,笔记还提供了大量的代码示例和练习题,帮助读者巩固所学的知识。通过实践,读者可以更好地理解深度学习的原理和应用。 总而言之,深度学习笔记v5是一本系统而全面的学习资料,适合对深度学习感兴趣的读者。通过阅读这本笔记,读者可以了解深度学习的基本概念和原理,掌握常用的深度学习框架,以及应用深度学习解决实际问题的方法。希望这本笔记能够对读者在深度学习领域的学习和研究有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值