深度学习
文章平均质量分 71
Hydrion-Qlz
啥都想学又都没时间开始的大学牲
(如需博客中某文件pdf或者是需要什么资源可直接邮箱联系
展开
-
overfitting(过拟合)和regularization(规范化)的详细介绍
文章目录`overfitting`过拟合`Regularization` 规范化规范化对神经网络性能的影响overfitting过拟合拥有大量自由参数的模型能够描述特别神奇的现象。但是即使这样的模型能够很好的拟合已有数据,他并不是一个好模型。因为这可能只是因为模型中⾜够的⾃由度使得它可以描述⼏乎所有给定⼤⼩的数据集,⽽不需要真正洞察现象的本质(即并没有找到他们的公共特征)。所以发⽣这种情形时,模型对已有的数据会表现的很好,但是对新的数据很难泛化。对⼀个模型真正的测验就是它对没有见过的场景的预测能⼒。.原创 2022-01-18 23:57:11 · 2801 阅读 · 0 评论 -
softmax 和 log-likelihood(对数似然) 损失函数
文章目录`softmax`神经元`log-likelihood` 损失函数softmax神经元softmax神经元的想法其实就是位神经网络定义一种新式的输出层,开始时和S型神经元一样,首先计算带权输入zjL=∑kwjkLakL−1+bjLz_j^L=\sum_kw_{jk}^La_k^{L-1}+b_j^LzjL=∑kwjkLakL−1+bjL。不过们这里我们不会使用S型神经元来获得输出。而是在这一层上应用一种叫做softmax函数在zjLz_j^LzjL上。根据这个函数,第j个神经元的输出原创 2022-01-18 17:43:51 · 2577 阅读 · 0 评论 -
交叉熵(the cross-entropy)代价函数的详细介绍及推导过程
交叉熵代价函数为什么要引入交叉熵代价函数首先我们先来看一个小例子,它的功能是将输入的数字进行取反然后输出,例如输入1需要输出0,在设置www和bbb的初始值时,我们设置了两种不同的取值,在第一个模型中,我们取的参数值为w=0.6,b=0.9w=0.6,b=0.9w=0.6,b=0.9,在第二个模型中,我们取的参数值为w=2,b=2w=2,b=2w=2,b=2,其具体的训练过程可以参照这里的前两个动画,可以看到对于第二个模型,开始个结束的时候学习速度均很慢,如下图,这种行为看起来和人类学习的行为差异很大,原创 2022-01-14 01:24:40 · 1435 阅读 · 0 评论 -
重要的人工神经元--感知器和Sigmod神经元
什么是神经元首先先来解释一下什么是神经元,他有什么用。人工神经网络是受到人类大脑的结构的启发而创造出来的,如下图所示,在我们的大脑中,有数十亿个称为神经元的细胞,它们互相链接形成了一个神经网络。神经网络算法正是模仿了上面的网络结构,下面是一个人工神经网络的构造图,每一个圆都代表着一个神经元,它们连接起来构成了一个网络。那么为什么会需要这么多的神经元呐?其实在神经元的数目多了之后相当于是一种简化。如果我们把整个神经网络要完成的工作想象成一个黑盒,那么在其需要完成的功能总量不变时,我们将其分解成很.原创 2022-01-14 19:32:04 · 1071 阅读 · 0 评论 -
使用python生成sigmoid函数的图形
使用python生成sigmoid函数的图形sigmoid函数:y=11+e−xy = \frac {1}{1+e^{-x}}y=1+e−x1结果代码# -*- coding:utf-8"""作者: Jia日期: 2022年01月30日描述: sigmoid函数的图形"""import matplotlib.pyplot as pltimport numpy as npdef sigmoid(x): y = 1.0 / (1.0 + np.exp(-x))原创 2022-01-30 18:22:27 · 1002 阅读 · 0 评论 -
python版多元线性回归的算法封装(详细注释)
-*- coding:utf-8“”"作者: Jia日期: 2022年01月30日描述: 多元线性回归的算法封装“”"import numpy as npfrom numpy import linalgclass multiLinerRegression:def init(self):“”"初始化权重和截距“”"self.coef = None # 代表的是权重self.interception = None # 代表的是截距self._theta = None # 代表原创 2022-01-30 18:14:07 · 582 阅读 · 0 评论 -
Jupyter快捷键总结(命令模式与编辑模式)
文章目录命令模式 (按键 Esc 开启)快捷键编辑模式 ( Enter 键启动)下快捷键Jupyter Notebook 有两种键盘输入模式。编辑模式,允许你往单元中键入代码或文本;这时的单元框线是绿色的。命令模式,键盘输入运行程序命令;这时的单元框线是灰色。命令模式 (按键 Esc 开启)快捷键按键组合作用Enter转入编辑模式Shift-Enter运行本单元,选中下个单元Ctrl-Enter运行本单元Alt-Enter运行本单元,在其下插入新单元.原创 2022-01-28 15:18:18 · 2017 阅读 · 0 评论 -
处理数据中分类变量的三种方法(附代码实现)
本文是将kaggle Courses中 Categorical Variables | Kaggle进行了翻译并且加入自己的理解,如有地方不清楚,可以查阅原文文章目录介绍三种方法1)删除分类变量2)Ordinal Encoding (序数编码)3)One-Hot Encoding代码实现Drop columns with categorical dataOrdinal encodingOne-hot encoding介绍一个分类变量只能取到有限变量的值考虑一项调查,询问您吃早餐的频率并提供四个.原创 2022-02-06 17:28:12 · 8180 阅读 · 0 评论 -
机器学习的基本知识
机器学习的定义Machine learning,a branch of artificial intelligence,is about the construction and study of systems that can learn from data .(from Wikipedia)机器学习算法的一般应用框架定义需要实现的功能采集足够多的样本:T={xi,yi}lNT=\{x_i,y_i\}^N_lT={xi,yi}lN,其中xix_ixi是模型的输入,yiy_iyi是模型原创 2022-01-17 18:04:54 · 147 阅读 · 0 评论 -
神经网络算法的总体实现过程
训练前的准备在训练一个神经网络时,第一个要做的事情就是选择一种网络框架,即神经元之间的连接模式也就是说,我们需要决定我们的网络有多少层以及每层分别有多少个单元。第一层,即输入层的单元数是我们训练集的特征数量,在我们确定训练集的特征时就需要确定好了。最后一层,即输出层的单元数是我们训练集的结果的类的数量,当分类数为2时,输出层仅需一个单元即可,此时模型的输出为一个实数;当分类数KKK大于等于三时,输出层的单元数就需要KKK个,此时模型的输出为一个向量,并且向量的维数为RK×1\R^{K\times1.原创 2022-02-01 22:13:00 · 1692 阅读 · 0 评论 -
使用python实现梯度下降算法(详细注释及运行结果)
本例使用的代价函数为y=(θ−2.5)2−1y=(\theta - 2.5)^2-1y=(θ−2.5)2−1,如果要使用其他代价函数,需要同时修改J(theta)和dJ(theta)函数需要设置不同的学习率可以改变第71行函数传入参数可以通过修改54行的epsilon来控制停止的时机结果学习率η=0.1\eta = 0.1η=0.1时:共训练了46次学习率η=0.8\eta=0.8η=0.8时:共训练了22次代码# -*- coding:utf-8"""作者: Jia日期: 2.原创 2022-01-30 18:48:14 · 1925 阅读 · 0 评论 -
梯度检测算法的步骤与python实现
梯度检测算法梯度检测主要是用来验证反向传播算法是否是正确的,其主要步骤如下:使用反向传播算法计算DVecDVecDVec(各层误差项的展开形式)使用数值梯度检测计算近似梯度将得到的两个值(向量)进行对比,确保二者相似如果二者相似的话说明反向传播算法实现无误,这时候需要关闭梯度检测,然后使用反向传播的代码进行学习如果二者差别较大则说明反向传播算法实现有误,需要对其进行改正,改正完后再次进行对比重点!!!确保在训练前关闭了梯度检测,如果没有关闭的话,那么会在每个内循环都运行,你的训练速度原创 2022-02-01 21:12:51 · 2382 阅读 · 0 评论 -
目标检测算法发展历程
这里的图片是从b站同济子豪兄的【精读AI论文】R-CNN深度学习目标检测算法 处截图的, 在这算是个记录吧,同时立个小小的flag,尽量在硕一结束前都搞明白是干啥的吧(希望能坚持住 :)在这也小推一下子豪兄,论文精读系列真的太适合我这种纯小白了,大家如果需要(或者被需要)读论文又自己读不明白可以去试试。...原创 2022-02-05 23:15:47 · 2506 阅读 · 0 评论 -
选择神经网络的超参数的一些常用策略
文章目录宽泛策略学习速率自动技术在我们使用神经网络解决问题的时候,寻找好的超参数其实是一件非常困难的事。当我们的训练结果不太好的时候,我们很难在众多的超参数中选中需要调节的那一个。可能问题的本身出在隐藏层的神经元个数,或者层数?也有可能是他已经在学习了,只是学习的Epoch不够多?或者是minibatch设置的太小了?可能我们需要换另外一个代价函数?可能我们需要尝试不同的权重初始化方法?也可能我们的网络本身就有问题?等等等等。我们很容易就在超参数的选择中迷失了方向。如果我们的网络规模很大,或者使用了很原创 2022-01-20 20:15:42 · 2647 阅读 · 0 评论 -
使用KNN实现MNIST数据分类(详细解释附完整程序)
数据读取import operatorimport osimport matplotlib.pyplot as pltimport numpy as npimport torchvision.datasets as dsetsfrom torch.utils.data import DataLoaderrelative_path = os.getcwd()batch_size = 100train_dataset = dsets.MNIST(root=relative_path +.原创 2022-01-29 23:56:03 · 5277 阅读 · 2 评论 -
python版一元线性回归的算法封装(附详细注释)
python版一元线性回归的算法封装(附详细注释)使用说明:先使用fit训练模型然后再使用predict函数进行预测最后提供了两种误差评估# -*- coding:utf-8"""作者: Jia日期: 2022年01月30日描述: 一元线性回归的算法封装"""import numpy as npclass uniLinearResgression: def __init__(self): """初始化一元线性回归模型""" self.a原创 2022-01-30 16:36:46 · 961 阅读 · 0 评论 -
使用python实现逻辑回归算法(logistic regression,完整代码及详细注释)
本例中使用的代价函数为:J=−yloga−(1−y)log(1−a)J = -y\log a -(1-y)\log (1-a)J=−yloga−(1−y)log(1−a)如果对这个代价函数或者其求导不了解,可以先看看这篇文章交叉熵(the cross-entropy)代价函数的详细介绍及推导过程如代码有误或不理解欢迎留言讨论# -*- coding:utf-8"""作者: Jia日期: 2022年01月30日描述: 逻辑回归的算法实现"""import numpy as np.原创 2022-01-30 19:41:16 · 7476 阅读 · 13 评论 -
多元梯度下降中常用的方法(特征缩放以及学习率的选择)
文章目录特征缩放学习率特征缩放思想:确保所有特征取值在同一个量级上方法:用所有特征除以它的取值范围例如:现在想预测房价与一些因素的关系,这里选用了房屋面积和卧室数量。其取值范围如下面式子x1= size(0−2000 feet2)x2=number of bedrooms(1−5)x_1=\text{ size}(0-2000 \text{ feet}^2)\\x_2=\text{number of bedrooms}(1-5)x1= .原创 2022-01-27 20:44:33 · 795 阅读 · 0 评论 -
将梯度下降算法应用到线性回归中的数学推导及图示
文章目录线性回归和梯度下降的形式表达应用计算线性回归和梯度下降的形式表达线性回归:假设函数hθ(x)=θ0+θ1x(1)h_\theta (x)=\theta_0+\theta_1x \tag1hθ(x)=θ0+θ1x(1)代价函数J(θ)=12m∑i=1m(hθ(x(i))−y(i))2(2)J(\theta)=\frac {1} {2m} \sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2 \tag2J(θ)=2m1i=1∑m(hθ(x(.原创 2022-01-25 16:13:19 · 587 阅读 · 0 评论 -
正规方程的介绍及与梯度下降的对比
对于某些线性回归问题,正规方程会给我们一个更好的方法,来求得参数θ\thetaθ的最优值到目前为止,我们都在使用梯度下降算法,我们使用这种迭代算法,经过很多步,也就是梯度下降的多次迭代,来收敛到全局最小。相反的,正规方程算法提供了一种求θ\thetaθ的解析解法,所以我们不再需要运行迭代算法,而是可以一次性地直接求解θ\thetaθ的最优值。所以说基本上可以一步直接得到最优值正规方程是通过求解下面的方程来找到使得代价函数最小的参数的∂∂θjJ(θj)=0\frac {\partial}{\par.原创 2022-01-27 21:57:23 · 695 阅读 · 0 评论 -
为什么在神经网络中权重矩阵必须随机初始化
权重矩阵的随机初始化当训练神经网络的时候,权重随机初始化是非常重要的。对于逻辑回归,把权重初始化为0是可以正常运行的。但是对于一个神经网络,如果把权重或者参数全部初始化为0,那么梯度下降是不会起作用的。我们来看看这是为什么,在讨论的时候先忽略b的影响,因此设b=0b=0b=0。假设我们的网络只有两层,输入层的神经元个数有4个,输出层的神经元个数有3个,那么我们的权重矩阵W为维数为(3,4)(3,4)(3,4),如果将其全部初始化为0的话,那么其所有行就是一样的,假设对于这些行都用一个向量mmm来表示原创 2022-02-25 12:51:36 · 1001 阅读 · 0 评论 -
梯度下降(Gradient descent)的图形化和形式化解释(简单易懂)
梯度下降算法是最小化代价函数(cost function)最常用的方法接来下我们对其具体的过程进行一个讲解问题描述这里仅以两个参数为例,对于多个参数同理获取代价函数J(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1)的最小值主要思路从任意θ0,θ1\theta_0,\theta_1θ0,θ1开始不断的改变θ0,θ1\theta_0,\theta_1θ0,θ1的值从而去减少J(θ0,θ1)J(\theta_0,\theta_1)J(θ0,θ1)的值,直.原创 2022-01-24 23:04:57 · 1035 阅读 · 0 评论 -
什么是机器学习
机器学习的定义Arthur Samuel(1959)Field of study that gives computers the ability to learn without being explicitly programmed.在没有明确的定义下,使计算机具有学习能力的研究领域Tom Mitchell(1998)A computer program is said to learn from experience E with respect to some task T an.原创 2022-01-24 21:20:57 · 196 阅读 · 0 评论 -
反向传播算法的数学推导
反向传播算法的数学推导视频链接:[双语字幕]吴恩达深度学习deeplearning.ai_哔哩哔哩本篇文章中将对于以下网络进行说明。假设网络总共有三层,假设输入层有n[0]n^{[0]}n[0]个神经元,隐藏层有n[1]n^{[1]}n[1]个神经元,输出层有n[2]n^{[2]}n[2]个神经元。这里先假设xxx为单样本,待推出结果后我们再进行向量化的推导。这里对各个参数的维数进行说明,方便后面再推导过程中的理解:参数维数xxx(n[0],1)(n^{[0]},1)(n原创 2022-02-24 15:45:20 · 663 阅读 · 0 评论 -
深度学习经典论文阅读系列之VGG网络
VGG论文阅读笔记本文中提到的论文均放在了个人仓库中,如果觉得还不错的话,欢迎帮我点个start,如果文章有任何问题,欢迎在评论区指正文章目录VGG论文阅读笔记摘要一、介绍二、网络的配置2.1 网络结构2.2 配置细节2.3 讨论三、分类框架3.1 训练3.2 测试3.3 实现细节四、分类实验五、结论摘要本篇论文研究了网络深度对精度的影响,基于本篇论文中提出的模型获得了ILSVRC-2014比赛中目标检测比赛的第一名和分类比赛的第二名。同时该模型在其他数据集上的泛化作用也很好,取得了目前(截止他原创 2022-04-26 15:28:19 · 2430 阅读 · 0 评论 -
MMDetection的安装及验证
安装MMDetection参考:安装 — MMDetection 2.22.0 文档进入openMMLab社区好久了,但是前面都是在学一些基础知识,最近看到了目标检测的部分,然后尝试配置了一下mmDet的环境,过程中踩了很多坑,也用了很长时间,在这里记录一下,避免大家后面再次踩坑了,整个过程如果顺利的话可能三分钟不到就好了本文假设已经配置好了anaconda且已经有了pytorch环境,,如果没有的话参考这个文章首先从已有的环境中克隆一份出来,这样可以省掉很多的下载时间conda create原创 2022-03-27 01:02:43 · 5104 阅读 · 3 评论 -
anaconda设置默认的启动环境
anaconda设置默认的启动环境安装完anaconda之后我们往往会添加新的环境,但是每次启动的时候都是默认在base环境的,我这里总结一下如何更换默认启动的环境为自己添加的环境首先执行命令(最好不要用root用户,更改到自己的账号上),输入命令:export PATH="~/anaconda/envs/your_env_name/bin:$PATH" # your_env_name是你自定义的环境名然后使用如下命令关闭默认启动base环境:conda config --set auto_ac原创 2022-03-23 23:09:15 · 9065 阅读 · 0 评论 -
记第一次训练出深度学习模型并成功预测结果
先放一下最终结果,参加的竞赛是Kaggle的Classify Leaves,是李沐大神举办的一个比赛,虽然已经过期了,但是还是可以来熟悉一下基本操作,总共有176个种类,随机预测概率大概为0.0056,我最终得到的预测结果正确率大概为30%,用了最简单的AlenNet,加了一点点的预处理,也就水平翻转之类的,对这个结果还是比较满意的,后续对这个模型继续修改,希望能把正确率提升到70左右吧。真的是太激动了,用了差不多一个礼拜,从头到尾写出了自己的第一个能用的模型,从开始不知道如何加载数据,如何是不知道如何原创 2022-03-20 23:01:41 · 3244 阅读 · 3 评论 -
pytorch保存和恢复参数
读写文件加载和保存张量import torchfrom torch import nnfrom torch.nn import functional as Fimport ospath = os.path.join(os.getcwd(), "")x = torch.arange(4)torch.save(x, path + "x-file")现在我们可以将存储在文件中的数据读回内存x2 = torch.load(path + "x-file")x2tensor([0, 1,原创 2022-03-15 18:30:12 · 2366 阅读 · 0 评论 -
pytorch的安装
pytorch的安装进入pytorch的官网选择自己需要的版本,如果不知道选什么和下面一样就可以打开anaconda的命令行界面,激活自己想安装的虚拟环境,如果使用默认环境则直接进行下一步就okconda activate xxx设置下载源为国内镜像源,这里使用的是清华的镜像源conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/然后复制刚刚在pytorch官网中最后一原创 2022-03-02 21:52:12 · 646 阅读 · 0 评论 -
动手学机器学习----数据预处理
视频链接:04 数据操作 + 数据预处理【动手学深度学习v2】_哔哩哔哩_bilibili文章目录数据预处理读取数据集处理缺失值转换为张量格式小结练习数据预处理🏷sec_pandas为了能用深度学习来解决现实世界的问题,我们经常从预处理原始数据开始,而不是从那些准备好的张量格式数据开始。在Python中常用的数据分析工具中,我们通常使用pandas软件包。像庞大的Python生态系统中的许多其他扩展包一样,pandas可以与张量兼容。本节我们将简要介绍使用pandas预处理原始数据,并将.原创 2022-02-28 15:09:07 · 333 阅读 · 0 评论 -
动手学深度学习----pytorch中数据操作的基本知识
04 数据操作 + 数据预处理【动手学深度学习v2】_哔哩哔哩_bilibili文章目录数据操作入门运算符广播机制索引和切片节省内存转换为其他Python对象小结练习数据操作🏷sec_ndarray为了能够完成各种数据操作,我们需要某种方法来存储和操作数据。通常,我们需要做两件重要的事:(1)获取数据;(2)将数据读入计算机后对其进行处理。如果没有某种方法来存储数据,那么获取数据是没有意义的。首先,我们介绍nnn维数组,也称为张量(tensor)。使用过Python中NumPy计算包的读.原创 2022-02-27 23:31:46 · 1088 阅读 · 0 评论