
python
Y·Not·Try
这个作者很懒,什么都没留下…
展开
-
使用Numpy实现一个神经网络
import numpy as npN, D_in, H, D_out = 64, 1000, 100, 10x = np.random.randn(N, D_in)y = np.random.randn(N, D_out)w1 = np.random.randn(D_in, H)w2 = np.random.randn(H, D_out)lr = 1e-6for i in range(500): # forward pass hidden_act = x.dot(w1) #.原创 2020-06-29 09:35:57 · 302 阅读 · 0 评论 -
【深度学习笔记整理-6.4】GRU
GRU相比于LSTM运算量小了许多,其中LSTM是SimpleRNN四倍,GRU是三倍。GRU只有更新门和重置门,其中更新门类似将遗忘门和输入门使用这一个门统一调控,重置门会将上一次的记忆重置后投入“信息门”使用。更新门使用更新门用以调控以往数据遗忘的比例和当下数据的输入比例重置门重置门用来重置上一次的记忆,然后再投入到信息门中形成当下的信息。整合其中类似LSTM中的遗忘门,类似LSTM中的输入门,这两个门同一由更新门调控。重置门用于重制上一次的记忆,与LSTM中原创 2020-06-16 11:03:39 · 237 阅读 · 0 评论 -
【深度学习笔记整理-6.3】循环神经网络:LSTM
LSTM是RNN中最为常用的模型,其需要估计的参数量是普通RNN的4倍,LSTM拥有“四进一出”,四进中又包含了三个门,分别为遗忘门,输入门和输出门。其中,遗忘门用于决定上一层数据保留的比率,输入门决定当下数据保留的比例,输出门决定最后输出的比例。想彻底牢记LSTM就记住这四进一出即可,下面介绍这四进一出第一进:遗忘门遗忘门用于决定上一层数据保留的比例,由于这个激活函数是sigmoid,所以输出结果位于0-1间,所以达到这个目的也比较容易。第二进:输入门输入门决定当下数据经过原创 2020-06-16 10:09:00 · 229 阅读 · 0 评论 -
【深度学习笔记整理-6.2】循环神经网络:SimpleRNN
在之前的文章中,我们使用全连接神经网络解决了很多的问题,但是,这种解决问题的神经网络是不考虑顺序的,对于渐进式的,有顺序的数据,全连接神经网络往往不如循环神经网络的效果更好。循环神经网络的最初想法,就是在全连接网络的基础之上,考虑前一层的数据,我们知道,全连接神经网络本质就是一堆非线性函数的叠加,其式子如下若输入为128维的向量,下一层隐藏层为64维,则U为64*128的矩阵,其中128列与对应的128维相乘,64行中每一行的数值实际上就是128维与下一层第i行相连的权重向量。循环神经网络最原创 2020-06-15 19:15:49 · 2414 阅读 · 0 评论 -
【深度学习笔记整理-6.1】处理文本数据
一般而言,我们若想处理文本数据,一种是将文本数据转为one-hot向量处理,另一种是转为下标组成的向量然后通过一层词嵌入转为待处理的向量。keras内置的函数可以快速帮助我们达到目的:首先我们需要引入Tokenizerfrom keras.preprocessing.text import Tokenizer实例化这个类,初始时我们可以传入参数num_words指定词典最大索引tokenizer = Tokenizer(num_words=10000)使用tokenizer对象去原创 2020-06-11 18:39:33 · 216 阅读 · 0 评论 -
【深度学习笔记整理-5.4】卷积神经网络可视化
我们知道,CNN由通道channel以及与通道相连的filter组成,我们可以可视化的内容就有这二者,其一,是卷积神经网络的中间输出,帮助我们了解层是如何对输入进行变换的。其二,是卷积神经网络的过滤器,帮助我们精确理解卷积神经网络中每个过滤器最容易接受的视觉模式。(即使得过滤器所有元素值最大的输入)此外,还有类激活的热力图,帮助我们理解哪个部分被识别属于某个类别,从而定位图像中的物体。...原创 2020-06-09 15:29:51 · 451 阅读 · 0 评论 -
【深度学习笔记整理-5.3】使用预训练模型
1.为什么神经网络可以使用预训练模型?所谓使用预训练的模型,就是使用别人已经训练好的模型及参数,虽然利用到的数据集不同,但是前几层几乎做的事情是相同的,就拿CNN举例,前几层都是在找一些简单的线条,对于足够大的网络和足够多的数据,前几层找到的线条是普适的,这也就是为什么我们可以使用预训练模型。2.如何使用预训练模型?使用预训练模型,我们就需要固定住前几层的参数,而后几层的参数(尤其是全连接的部分)需要我们根据手头的任务进行训练得出,以CNN为例,我们在使用这个预训练模型时,就要固定住(froze原创 2020-06-02 14:25:36 · 935 阅读 · 0 评论 -
【深度学习笔记整理-5.2】猫狗大战:小样本训练处理
1.资料获取 辨别猫狗的图片资源来自与Kaggle的数据集,自行搜索下载即可。由于知名原因,如果没有条件进入到Kaggle竞赛网站,可以使用以下链接下载:https://pan.baidu.com/s/1pBSenGv248oxqcpws500Yg 提取码:wtm2 下载之后的数据大概猫狗各25000张左右,由于我们希望使用更少的数据达到效果,所以我们再额外建好文件夹(文件夹根目录下为训练集,验证集和测试集,其中每个文件夹内又有两个文件夹分别存放猫和狗的图片,这样利于keras...原创 2020-05-29 22:56:59 · 463 阅读 · 0 评论 -
【深度学习笔记整理-5.1】CNN:卷积神经网络
CNN:卷积神经网络卷积卷积神经网络和其名字有较大的联系,这里的卷积即有‘滑动乘积’的意思,不同于前面对图片向量的扁平化处理,CNN会更加在意局部像素的相关性,这些局部像素可能在拉直向量后被分的很远,以至于失去了其原有的相关性。“卷”是如何卷的?我们首先需要一个相对于原图片更小的滑动矩形(这个矩阵就是所谓的卷积核kernel),然后在较大的原图中从左上角开始向右滑动(默认一格),向右无法移动后向下移动一格并从左侧重新开始,以此对原图提取相关特征,这个提取特征的过程,实际上就是透过矩阵间ele原创 2020-05-28 23:26:52 · 306 阅读 · 0 评论 -
【深度学习笔记整理-4.1】如何避免过拟合?
其实神经网络训练的过程就是一个欠拟合与过拟合拉锯的过程,一方面,我们希望我们的网络可以比较好的拟合训练数据,另一方面,我们又不希望它学习的那么好,以至于最终只是记忆住了全部答案。 解决过拟合的问题非常重要,一般有如下四种方法:1.增加训练数据数量 模型的训练数据越多,泛化能力自然也越好。这是因为更多的数据可以给我们找到更一般的模式。如果无法获取更多数据,次优解决方法是调节模型允许存储的信息量,或对模型允许存储的信息加以约束。如果一个网络只能记住几个模式,那么优化过程会迫使...原创 2020-05-27 19:13:44 · 332 阅读 · 0 评论 -
【深度学习笔记整理-3.3】标准化与K折交叉验证
1.标准化首先标准化可以解决不同范围数据的情况,解决其中一种特征受制于scale而导致的弱影响问题。此时不同特征同属于接近的scale,梯度下降的速度是最快的。代码如下:mean = train_data.mean(axis=0)std = train_data.std(axis=0)train_data -= meantrain_data /= stdtest_data -= meantest_data /= std可以注意到,这里的平均和标准差是沿着样本轴方原创 2020-05-26 12:01:04 · 990 阅读 · 0 评论 -
【深度学习笔记整理-3.2】Keras多分类: 路透社新闻主题
1.关于多分类,如果是每个数据点只能被划分到一个类别,那他就是单标签,多分类问题,反之,如果每个数据点可以被分到多个类别,那他就是一个多标签,多分类的问题。关于新闻主题分类,就是典型的单标签,多分类问题。2.路透社数据集也是keras内置的数据集,包含46个不同的主题,每个主题有至少十个样本,共有8982个训练样本和2246个测试样本。3.引入数据集from keras.datasets import reuters# 取频率最高的前一万字(train_datas,train_label原创 2020-05-26 10:14:31 · 468 阅读 · 0 评论 -
Python:5分钟理解装饰器的本质
1.装饰器的应用场景 当我们想对某函数赋予额外功能,特别是当许多函数都需要这个功能时(如对某函数的执行时间计时),首先我们不可能对函数一个一个的加代码,那样太耗时,其次我们又不想破坏原来函数本身的代码整洁度(比如计时就不算原来函数功能的一部分)。这时候,装饰器就起到了作用。2.为什么不直接用函数嵌套 说到这里,我们可能会想到,那就直接用函数嵌套呗,比如下面这段代码def pr(): print('aaa')pr()使用函数嵌套之后的结果def pr(...原创 2020-05-25 21:25:54 · 239 阅读 · 0 评论 -
【深度学习笔记整理-3.1】Keras二分类:IMDB影评
1.IMDB数据集:IMDB数据集是keras内置的数据集之一,共有50000条严重两级分化的评论,其中训练集和测试集都有25000条,且二者的正负评论各占50%(数据极为平衡,真实数据可能不会如此,对于类别不平衡数据需要进行一定处理)。IMDB数据集已经过预处理,评论(即单词序列)已被转换为整数序列,其中每个整数代表字典中的某个单词。注:正常情况下,数据集是文字的情况应该先调用keras中preprocessing文件的text类,实例化(实例化时可输入参数num_words决定考虑频率最高的多少原创 2020-05-22 22:25:39 · 626 阅读 · 0 评论 -
【深度学习笔记整理-2.3】axis,transpose,reshape
1.axisaxis一直是个让人混淆的点,axis=k代表了沿着某轴,可是这个轴代表了什么意思?了解过上一节笔记之后,其实这块理解起来就比较简单了。简单复习一下,对于一个高维的张量(a,b,c,d),我们可以从后向前看,首先是有个b*c的矩阵,然后有b个这样的矩阵,最后有a个这样的整体。以(2,2,3,4)为例,画起来是这个样子那么axis=0是什么意思?0轴实际上代表了最外面的整体,在上面这个图中,最大的整体是那么以numpy中的sum举例,axis=0就是两个最大整体的对位相原创 2020-05-20 13:03:32 · 395 阅读 · 0 评论 -
【深度学习笔记整理-2.2】张量Tensor
1.什么是张量(Tensor)?张量是可存储数据的容器,之前将数据存储在多维numpy数组中,这就是张量。张量拥有自己的维度,也叫轴。例如:矩阵就是二维张量.2.标量scalar,向量vector,矩阵matrix标量即0维张量,向量是1维张量(5维的向量也是1维的张量),其shape为(n,),python中常喜欢将向量横置。矩阵是二维张量,多个二维张量的组合即三维张量,三维张量的shape为(a,b,c),三维张量可以理解为有a个b*c的矩阵组合而成。对于更高维的张量,我们都可以从后向前去理原创 2020-05-19 19:05:51 · 320 阅读 · 0 评论 -
【深度学习笔记整理-2.1】深度学习的Hello World---MNIST手写识别
1.MNIST是keras中一个关于手写识别的数据集,其中有6万张训练图像与1万张测试图像。keras中共有七个内置数据集,注:CIFAR10与CIFAR100分别为分类数为10和分类数100的两个图片数据集。原创 2020-05-18 14:18:48 · 219 阅读 · 0 评论 -
【深度学习笔记整理-1.2.3】梯度下降:
1.梯度常用符号说明...原创 2020-05-16 17:18:05 · 831 阅读 · 0 评论 -
【深度学习笔记整理-1.2.2】支持向量机
1.支持向量机的目的:获取一个分类边界,这个边界可以最大化距离不同类别的最近点。这样的边界可以拥有更好的抗噪声干扰性。2.限制:①分类正确②margin=min类别到边界距离于是,我们将这个问题转化为了一个maxmin的问题,并且我们的限制出现了不等式,于是需要KKT等算法,将原问题转化为其对偶问题求解。3.支持向量机一般需要经过两步:① 将数据映射到一个新的高维表示,这时决策边界可以用一个超平面来表示注:这一步为解决一些线性不可分的情况,并且利用核函数,我们可以把多次的高次运算转化为一次原创 2020-05-15 16:11:00 · 180 阅读 · 0 评论 -
【深度学习笔记整理-1.2】概率模型和贝叶斯定理
概率模型:1.1各种概率及其定义:①联合概率:表示包含多个条件且所有条件同时成立的概率。在机器学习中,这些所谓的条件其实就是数据的各种特征,比如一个人身高=180,同时体重=180([180,180])的概率P(身高=180,体重=180)就是一种联合概率。②边缘概率与联合概率对应,这类仅与单个随机变量有关的概率称为边缘概率这里,P(身高=180)或P(体重=180)就是边缘概率③联合概率与边缘概率的转换沿着联合概率某一方向穷举所有概率值累和,得到的相加结果就是边缘概率值比如,.原创 2020-05-15 14:31:42 · 645 阅读 · 0 评论 -
【深度学习笔记整理-1.1】深度学习简介
1.人工智能定义:努力将通常由人类完成的智力任务自动化。根据定义来看,人工智能是一个比较综合的领域,不仅包括机器学习和深度学习,也包括了一些不涉及学习的方法,比如早期使用足够多的硬编码规则(就是if else这类)来模拟人工,被称为符号主义人工智能(symbolic AI),但是这种方法无法解决某些无法用规则描述的任务,比如,我们无法用规则来描述某张图片是不是猫,我们无法用规则做语音的识别等等。所以出现了一种新的方法来代替符号主义,这就是机器学习。注:机器学习之外还有符号主义等归属于人工智能原创 2020-05-14 23:05:48 · 337 阅读 · 0 评论