![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
李沐《动手学深度学习》
.....
é«
这个作者很懒,什么都没留下…
展开
-
ResNet-DenseNet
ResNet:ResNet为什么能训练很深的网路:ResNet引入了加法从而在反向传播的时候后面层的梯度是加上前面层的梯度,使得梯度不会很小,解决了梯度消失的问题;DenseNet:由于DenseNet对输入进行cat操作,一个直观的影响就是每一层学到的feature map都能被之后所有层直接使用,这使得特征可以在整个网络中重用,也使得模型更加简洁....原创 2022-04-05 18:11:52 · 255 阅读 · 0 评论 -
[李沐] 批量规范化一
由于神经网络的表达能力大多来自激活函数的非线性,所以让输入数据“适应于”激活函数是很重要的,具体而言:对于sigmoid系列的激活函数而言,由于函数两端过于平坦,所以为了不陷入梯度消失的窘境,我们希望神经元的输入集中在函数中央,而不希望神经元的输入(绝对值)过大。 对于Relu激活函数而言,由于函数在输入小于0的区域恒等于0,那么从直观上来说,如果一个很大的梯度把某个神经元的输入拉到了小于0很多的区域,该神经元从此以后的输出将永远是0了,因为他基本不可能回到大于0的区域。这就是著名的“Dying R.原创 2022-03-13 17:52:02 · 80 阅读 · 0 评论 -
【李沐】 LeNet -->AlexNet -> VGG
原创 2022-03-13 16:23:26 · 106 阅读 · 0 评论 -
【李沐】 卷积神经网络
1:输出的大小计算:添加ph行填充,pw列填充,卷积核形状为kh×kw,垂直步幅为sh、水平步幅为swtorch.nn.Conv2d()函数详解原创 2022-03-13 15:37:18 · 90 阅读 · 0 评论 -
【李沐 CPU GPU】
def try_gpu(i=0): "如果存在,则返回gpu(i),否则返回CPU()" if torch.cuda.device_count() >= i+1 return torch.devide(f'cuda:{i}') return torch.device('cpu')def try_all_gpus(): "返回所有可用的GPU,如果没有,则返回cpu“ devices = [torch.device(f'cuda{i}...原创 2022-03-10 15:33:35 · 82 阅读 · 0 评论 -
【李沐】反向传播的一些理解-以及反向传播时可能梯度消失,梯度爆炸
求一个参数对多个参数的偏导数sigmiod容易造成梯度消失原创 2022-03-09 17:33:26 · 97 阅读 · 0 评论 -
【李沐】模型防止过拟合、欠拟合的一些策略-包括L1,L2正则化的一个理解
1.首先在模型选择上,简单数据,应该使用简单的模型,复杂的数据用复杂的模型2. 训练数据集中的样本越少,我们就越有可能(且更严重地)过拟合。 随着训练数据量的增加,泛化误差通常会减小。 此外,一般来说,更多的数据不会有什么坏处。 对于固定的任务和数据分布,模型复杂性和数据集大小之间通常存在关系。 给出更多的数据,我们可能会尝试拟合一个更复杂的模型。 能够拟合更复杂的模型可能是有益的。 如果没有足够的数据,简单的模型可能更有用。 对于许多任务,深度学习只有在有数千个训练样本时才优于线性模型。3.L..原创 2022-03-07 09:41:16 · 242 阅读 · 0 评论 -
【李沐】softmax回归-1.使用交叉熵作为损失函数而不是MSE均方误差-(意思就是为什么经过了softmax之后不用MSE) 2.softmax与sigmoid
2. 交叉熵的来源2.1 信息量一条信息的信息量大小和它的不确定性有很大的关系。一句话如果需要很多外部信息才能确定,我们就称这句话的信息量比较大。比如你听到“云南西双版纳下雪了”,那你需要去看天气预报、问当地人等等查证(因为云南西双版纳从没下过雪)。相反,如果和你说“人一天要吃三顿饭”,那这条信息的信息量就很小,因为条信息的确定性很高。那我们就能将事件x_0的信息量定义如下(其中p(x_0)表示事件x_0发生的概率):概率总是一个0-1之间的值,-log(x)的图像如上.原创 2022-03-07 00:41:48 · 1483 阅读 · 1 评论 -
[kaggle] House-price(房价预测)中的代码
pandas.DataFrame.dtypes用法:df.dtypes,返回一个Series(sereies的index是DF每一列的名字,value是每一列的dtype),描述了每一列的数据类型,可以通过列的索引来索引返回的Series。如果某一列中混合了多种类型,则该列的类型被认为是object类型。df = pd.DataFrame({'float': [1.0], 'int': [1], 'datetime'.原创 2022-03-09 15:01:11 · 837 阅读 · 0 评论 -
【李沐】多层感知机--1.为什么加入隐藏层--2.为什么加入激活函数
1.实际上多层感知机(线性-激活-线性-激活这一结构)是构建 了一个连续的分段线性函数,自己脑子想一下假设线性是ax+b激活是relu。max(a(max(ax+b,0))+b,)作为一个两层的感知机就是一个两段的线性连续函数从而说明了,贾乐言隐藏层和激活函数能使原本一层的严格线性的模型变得非线性...原创 2022-03-07 07:48:55 · 278 阅读 · 0 评论 -
【李沐】深度学习里的参数管理
1.一层的参数储存在net[].state_dict()2.参数初始化。# -*- coding: utf-8 -*-"""Created on 2019@author: fancp"""import torch import torch.nn as nnw = torch.empty(3,5)#1.均匀分布 - u(a,b)#torch.nn.init.uniform_(tensor, a=0.0, b=1.0)print(nn.init.uniform_(w))原创 2022-03-09 19:47:54 · 89 阅读 · 0 评论 -
【李沐】 softmax回归的代码
对于一个样本使用它的one-hot标签能获得它的正确分类的概率,方便后面使用交叉熵:cmp = y_hat.type(y.dtype) == y对于yhat中的每一行,也就是每一张图片,找到它的最大值,并且用它的Index来表示。所以y_hat就可以表示为tensor([2,2])y_hat.argmax(axis=1)解释没有参数时,是默认将数组展平,当axis=1,是在行中比较,选出最大的列索引这也就是代码中y_hat = y_hat.argmax(axis...原创 2022-03-11 18:50:44 · 1383 阅读 · 2 评论 -
【李沐】- 线性回归 -自己的理解
3.1为什么使用平方损失作为线性回归的好坏的度量:原因就在于正态分布和线性回归的关系, ϵ=yi-(wTx+b)ϵ是一个随机变量,ϵ的取值有i个 i∈N(N是样本个数),我们对ϵ这个随机变量求似然因此,在高斯噪声的假设下,最小化均方误差等价于对线性模型的极大似然估计...原创 2022-03-06 19:29:00 · 178 阅读 · 0 评论