
深度学习
文章平均质量分 88
NDNPOMDFLR
默而知之
展开
-
深度学习基础24(实战:房价预测)
实战:预测房价此数据集由Bart de Cock于2011年收集 , 涵盖了2006-2010年期间亚利桑那州埃姆斯市的房价。 这个数据集是相当通用的,不会需要使用复杂模型架构。下载和缓存数据集这里实现几个函数来方便下载数据。 首先,我们建立字典DATA_HUB, 它可以将数据集名称的字符串映射到数据集相关的二元组上, 这个二元组包含数据集的url和验证文件完整性的sha-1密钥。 所有类似的数据集都托管在地址为DATA_URL的站点上。import hashlibimport osimport原创 2022-04-06 15:52:25 · 2944 阅读 · 2 评论 -
深度学习基础22(数值稳定性)
数值稳定性和模型初始化初始化方案的选择在神经网络学习中起着举足轻重的作用, 它对保持数值稳定性至关重要。此外,这些初始化方案的选择可以与非线性激活函数的选择有趣的结合在一起。选择哪个函数以及如何初始化参数可以决定优化算法收敛的速度有多快。 糟糕选择可能会导致我们在训练时遇到梯度爆炸或梯度消失。梯度消失和梯度爆炸不稳定梯度带来的风险不止在于数值表示; 不稳定梯度也威胁到我们优化算法的稳定性。 我们可能面临一些问题。要么是梯度爆炸(gradient exploding)问题: 参数更新过大,破坏了原创 2022-04-05 13:35:13 · 2348 阅读 · 2 评论 -
深度学习基础21(Dropout)
丢弃法(Dropout)我们为什么要使用丢弃法?一个好的模型需要对输入数据的扰动鲁棒丢弃法:在层之间加入噪音无偏差加入噪音对x加入噪音得到x’ 我们希望E[x’]=x,x的期望不变丢弃法对每个元素进行如下扰动这样可以保证x的期望不变使用丢弃法通常将丢弃法作用在隐藏全连接层的输出上正则项只在训练中使用:只影响模型参数的更新重新审视过拟合当面对更多的特征而样本不足时,线性模型往往会过拟合。 相反,当给出更多样本而不是特征,通常线性模型不会过拟合。但线性模型泛原创 2022-04-02 16:56:48 · 2478 阅读 · 0 评论 -
深度学习基础20(权重衰退以及代码实现详解)
权重衰减![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ehy5R4fH-1648806333395)(C:\Users\Lenovo\Documents\Tencent Files\850604703\FileRecv\MobileFile\Image\O6Z4JUTQKQ5[F51]45}0~[B.png)](https://img-blog.csdnimg.cn/c14d72718c1a4d289631d2dbde576be0.png?x-oss-process=i原创 2022-04-01 17:51:08 · 2403 阅读 · 0 评论 -
深度学习基础19(模型选择,拟合,K折交叉)
模型选择、欠拟合和过拟合我们的目标是发现模式(pattern)但是,我们如何才能确定模型是真正发现了一种泛化的模式, 而不是简单地记住了数据呢?例如,我们想要在患者的基因数据与痴呆状态之间寻找模式, 其中标签是从集合{痴呆,轻度认知障碍,健康}中提取的。因为基因可以唯一确定每个个体(不考虑双胞胎), 所以在这个任务中是有可能记住整个数据集的。只有当模型真正发现了一种泛化模式时,才会作出有效的预测。更正式地说,我们的目标是发现某些模式, 这些模式捕捉到了我们训练集潜在总体的规律。如果成功做到了这原创 2022-03-30 17:34:04 · 4326 阅读 · 0 评论 -
深度学习基础18(多层感知机代码实现)
多层感知机的从零开始实现现在自己实现一个多层感知机。为了与之前softmax回归 获得的结果进行比较, 将继续使用Fashion-MNIST图像分类数据集import torchfrom torch import nnfrom d2l import torch as d2lbatch_size = 256train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)初始化模型参数Fashion-MNIST中的每个图像由 2原创 2022-03-30 12:49:14 · 2563 阅读 · 0 评论 -
深度学习基础17(感知机,结合非线性函数来构建具有更强表达能力的多层神经网络架构)
多层感知机隐藏层softmax回归的模型架构通过单个仿射变换将我们的输入直接映射到输出,然后进行softmax操作。如果我们的标签通过仿射变换后确实与我们的输入数据相关,那么这种方法确实足够了。 但是,仿射变换中的线性是一个很强的假设。线性模型可能会出错例如,线性意味着单调假设:任何特征的增大都会导致模型输出的增大(如果对应的权重为正), 或者导致模型输出的减小(如果对应的权重为负)。有时这是有道理的。 例如,如果预测一个人是否会偿还贷款。可以认为,在其他条件不变的情况下, 收入较高的申请人原创 2022-03-29 18:31:38 · 4307 阅读 · 0 评论 -
深度学习基础16(softmax回归使用pytorch框架简洁实现)
softmax回归的简洁实现深度学习框架的高级API能够使实现softmax 线性回归变得更加容易。同样,通过深度学习框架的高级API也能更方便地实现softmax回归模型。import torchfrom torch import nnfrom d2l import torch as d2lbatch_size = 256train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)初始化模型参数softmax回归的输出原创 2022-03-29 16:47:33 · 1280 阅读 · 0 评论 -
深度学习基础15(softmax回归的基本实现)
softmax回归的从零开始实现引入Fashion-MNIST数据集, 并设置数据迭代器的批量大小为256。import torchfrom IPython import displayfrom d2l import torch as d2lbatch_size = 256train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)初始化模型参数和之前线性回归的例子一样,这里的每个样本都将用固定长度的向量表示。原始数据集原创 2022-03-28 20:16:41 · 2459 阅读 · 3 评论 -
深度学习基础14(softmax回归数据集的选择以及读取)
图像分类数据集MNIST数据集是图像分类中广泛使用的数据集之一,是对手写数字的识别,大概86年提出的但作为基准数据集过于简单。我们将使用类似但更复杂的Fashion-MNIST数据集%matplotlib inlineimport torchimport torchvision #是pytorch对于计算机视觉实现的一个库from torch.utils import data#方便读取数据一些小批量的函数from torchvision import transforms#对数据操作的模原创 2022-03-28 18:31:25 · 1408 阅读 · 0 评论 -
深度学习基础13(三种常见loss函数的优劣)
损失函数损失函数用来衡量预测值和真实值之间的区别下面介绍三个常用的损失函数L2 Loss(均方损失)除以2的意思是说在求导的时候2和1/2可以抵消下面所有图的横坐标就是预测值与真实值的差上图是这个损失函数的特性:蓝色的曲线:损失函数的曲线绿色的曲线:是它的似然函数,可以看出它的似然函数是一个高斯分布橙色的曲线:表示损失函数的梯度L1 Loss (绝对值损失函数)蓝色的曲线:损失函数的曲线绿色的曲线:是它的似然函数橙色的曲线:表示损失函数的梯度,可以看出在y’大于0时,它的原创 2022-03-28 15:27:35 · 2589 阅读 · 0 评论 -
深度学习基础12(softmax回归学前需知)
softmax回归分类问题:不是问“多少”,而是问“哪一个”:某个图像描绘的是驴、狗、猫、还是鸡?某人接下来最有可能看哪部电影?通常,机器学习实践者用分类这个词来描述两个有微妙差别的问题:我们只对样本的“硬性”类别感兴趣,即属于哪个类别;我们希望得到“软性”类别,即得到属于每个类别的概率。 这两者的界限往往很模糊。其中的一个原因是:即使我们只关心硬类别,我们仍然使用软类别的模型。分类问题我们从一个图像分类问题开始。 假设每次输入是一个2×2的灰度图像。我们可以用一个标量原创 2022-03-28 14:57:22 · 1107 阅读 · 0 评论 -
深度学习基础11(线性回归使用pytorch里的框架来实现)
线性回归的简洁实现接下来使用一些框架来实现线性回归学习框架可以自动化基于梯度的学习算法中重复性的工作。在上篇文章中,我们只运用了:(1)通过张量来进行数据存储和线性代数;(2)通过自动微分来计算梯度。实际上,由于数据迭代器、损失函数、优化器和神经网络层很常用, 现代深度学习库也为我们实现了这些组件。下面将介绍如何通过使用深度学习框架来简洁地实现 线性回归模型生成数据集与上篇文章类似,首先生成数据集。import numpy as npimport torchfrom torch.ut原创 2022-03-26 19:47:31 · 1655 阅读 · 0 评论 -
深度学习基础10(线性回归最基础实现,只使用自动求导和tensor计算)
线性回归的从零开始实现本文将从零开始实现整个方法, 包括数据流水线、模型、损失函数和小批量随机梯度下降优化器。这样做事有意义的,可以知道更深的原理,同时,了解更细致的工作原理将方便我们自定义模型、自定义层或自定义损失函数当然我们以后都是使用深度学习里面的框架本文将只使用简单的tensor的计算和自动求导来演示线性回归先导入random的包,因为我们要随机梯度下降和随机化初始化我们的权重%matplotlib inline #意思是我们在plot的时候嵌入到matnotebook里面import原创 2022-03-26 18:11:05 · 1221 阅读 · 4 评论 -
深度学习基础9(优化算法,梯度下降,小批量随机梯度下降,超参数)
基础优化方法这个图可以直观的看出寻找最优解的路线梯度下降有显示解的模型都非常简单,但我们以后几乎解决的问题都是没有显示解的当一个模型没有显示解的时候怎么办呢?下面来讲一下梯度下降:梯度下降通过不断沿着反梯度方向更新参数求解挑选一个参数的随机初始值w0重复迭代参数t=1,2,3(在接下来的时刻里不断更新w0,来接近我们的最优解)(上图为更新法则,意思是:上一个时刻 减去 学习率(标量)*损失函数关于t-1时刻的梯度)沿梯度方向将增加损失函数值学习率:步长的超参数原创 2022-03-26 16:06:42 · 907 阅读 · 0 评论 -
深度学习基础8(概率,期望,方差)
概率简单地说,机器学习就是做出预测。第一个例子:根据照片区分猫和狗首先,问题的难度可能取决于图像的分辨率。虽然人类很容易以160×160像素的分辨率识别猫和狗, 但它在40×40像素上变得具有挑战性,而且在10×10像素下几乎是不可能的。换句话说,我们在很远的距离(从而降低分辨率)区分猫和狗的能力可能会变为猜测。如果完全肯定图像是一只猫,我们说标签𝑦是"猫"的概率,表示为𝑃(𝑦=“猫”)等于1。第二个例子:给出一些天气监测数据,预测明天北京下雨的概率。 如果是夏天,下雨的概率是0.5。在这原创 2022-03-26 14:46:07 · 1523 阅读 · 0 评论 -
深度学习基础7(正反向传播,计算图,自动微分,分离计算,控制流梯度计算)
开始之前,补充一个关于梯度的图,方便记忆输入输出的形状计算图自动求导的两种模式正向积累存储中间结果反向积累(又叫反向传递)去除不需要的枝关于复杂度:自动微分深度学习框架通过自动计算导数,即自动微分(automatic differentiation)来加快求导。实际中,根据我们设计的模型,系统会构建一个***计算图***(computational graph), 来跟踪计算是哪些数据通过哪些操作组合起来产生输出。自动微分使系统能够随后反向传播梯度。这里,反向原创 2022-03-25 18:36:00 · 1262 阅读 · 0 评论 -
深度学习基础6(微分,偏导,梯度,链式法则)
微积分如下图所示,内接多边形的等长边越多,就越接近圆。 这个过程也被称为逼近法(method of exhaustion)。事实上,逼近法就是**积分(integral calculus)**的起源微积分的另一支,**微分(differential calculus)**被发明出来。在微分学最重要的应用是优化问题,即考虑如何把事情做到最好,这种问题在深度学习中是无处不在的。在深度学习中,我们“训练”模型,不断更新它们,使它们在看到越来越多的数据时变得越来越好。通常情况下,变得更好意味着最小化一原创 2022-03-25 17:31:16 · 2334 阅读 · 2 评论 -
深度学习基础4(标量,向量,张量,矩阵)
线性代数标量严格来说,称仅包含一个数值的叫标量(scalar)标量由只有一个元素的张量表示。在下面的代码中,我们实例化两个标量,并执行一些算术运算import torchx = torch.tensor(3.0)y = torch.tensor(2.0)x + y, x * y, x / y, x**y(tensor(5.), tensor(6.), tensor(1.5000), tensor(9.))向量可以将向量视为标量值组成的列表。将这些标量值称为向量的元素(eleme原创 2022-03-24 18:01:02 · 1952 阅读 · 0 评论 -
深度学习基础3数据预处理
数据预处理通常使用pandas软件包。pandas`可以与张量兼容。读取数据集创建一个人工数据集,并存储在CSV(逗号分隔值)文件) ../data/house_tiny.csv中。 以其他格式存储的数据也可以通过类似的方式进行处理。 下面我们将数据集按行写入CSV文件中。import osos.makedirs(os.path.join('..', 'data'), exist_ok=True)data_file = os.path.join('..', 'data', 'house_tin原创 2022-03-24 16:39:42 · 1609 阅读 · 0 评论 -
深度学习基础2(运算、广播、索引、切片、内存节省、转换其他Python对象)
运算符如何在这些数据上执行数学运算,其中最简单且最有用的操作是按元素(elementwise)运算。它们将标准标量运算符应用于数组的每个元素。 对于将两个数组作为输入的函数,按元素运算将二元运算符应用于两个数组中的每对位置对应的元素。我们可以基于任何从标量到标量的函数来创建按元素函数。在数学中,我们通过符号f:R→R 来表示一元标量运算符(只接收一个输入)。 这意味着该函数从任何实数映射到另一个实数。 通过符号f:R,R→R 表示二元标量运原创 2022-03-23 18:11:03 · 1080 阅读 · 0 评论 -
深度学习基础知识1(数据操作)
数据操作需要某种方法来存储和操作数据时(1)获取数据;(2)将数据读入计算机后对其进行处理。 如果没有某种方法来存储数据,那么获取数据是没有意义的。1.张量 tensorn维数组,也称为张量(tensor)张量表示由一个数值组成的数组,这个数组可能有多个维度。 具有一个轴的张量对应数学上的向量(vector); 具有两个轴的张量对应数学上的矩阵(matrix); 具有两个轴以上的张量没有特殊的数学名称。无论使用哪个深度学习框架,它的张量类(在MXNet中为ndarray, 在PyTorch和原创 2022-03-23 16:35:00 · 1113 阅读 · 0 评论