python神经网络

AlexNet卷积神经网络

徘徊边缘 提交于 2020-01-08 02:06:24
译者按: 祖师爷Hinton 带领的小组经典之作,深度学习开山祖师 Hinton率领的谷歌团队多次夺冠 ,主力成员为 hinton 在多伦多大学的学生 Alex Krizhevsky , Ilya Sutskever , 因此他们的解决方案也叫alexnet , 这篇文章是hinton大神团队的代表性之作,CNN (卷积神经网络)已经成为图像识别处理的标准,alexnet作为CNN的代表性方案基础,开创性的GPU计算卷积 , 仿生视觉细胞的局部感受野等手段解决了图像处理的难题, 和同期的VGG、ResNet、GoogleNet等比肩,使得图像识别成为了人工智能的最成功领域。 ImageNet是一个计算机视觉系统识别项目,缔造者为斯坦福大学教授李飞飞 ,是目前图像识别最大的数据库。是美国斯坦福的计算机科学家,模拟人类的识别系统建立的。能够从图片识别物体。ImageNetLSVRC图像识别大赛素有国际“计算机视觉奥林匹克“之称。数据集包含大约1000多万张各种图片,被分为1000个分类,参赛者训练分类器,在测试数据上取得最高辨识正确率者为优胜。 原文地址: http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks 作者 : University of

Python机器学习书-奠基之路

安稳与你 提交于 2020-01-07 08:42:49
来自百度百科: https://baike.baidu.com/item/Python%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/20499731?fr=aladdin 该书涵盖内容全面是一本很好的入门级图书。 《Python机器学习》是2017年 机械工业出版社 出版的图书,作者是塞巴斯蒂安·拉施卡(Sebastian Raschka) 作者:[美] 塞巴斯蒂安·拉施卡(Sebastian Raschka) 著 ISBN(书号):978-7-111-55880-4 丛书名:数据科学与工程技术丛书 出版日期:2017-03 版次:1/1 开本:16 定价:¥79.00 内容简介 本书将机器学习背后的基本理论与应用实践联系起来,通过这种方式让读者聚焦于如何正确地提出问题、解决问题。书中讲解了如何使用Python的核心元素以及强大的机器学习库,同时还展示了如何正确使用一系列统计模型。不管你是学习数据科学的初学者,还是想进一步拓展对数据科学领域的认知,本书都是一个重要且不可错过的资源,它能帮助你了解如何使用Python解决数据中的关键问题。 使用Python在深度学习、数据转换与数据可视化领域功能强大的开源库 学习关于提高机器学习系统与算法效率以及优化方面的有效策略和最佳实践 提出(并解决)数据方面的棘手问题,在大规模数据集基础上构建稳定的统计模型

递归神经网络(RNN)简介

谁说我不能喝 提交于 2020-01-06 18:03:19
在此之前,我们已经学习了前馈网络的两种结构——多层感知器和卷积神经网络,这两种结构有一个特点,就是假设输入是一个独立的没有上下文联系的单位,比如输入是一张图片,网络识别是狗还是猫。但是对于一些有明显的上下文特征的序列化输入,比如预测视频中下一帧的播放内容,那么很明显这样的输出必须依赖以前的输入, 也就是说网络必须拥有一定的”记忆能力”。为了赋予网络这样的记忆力,一种特殊结构的神经网络——递归神经网络(Recurrent Neural Network)便应运而生了。网上对于RNN的介绍多不胜数,这篇《Recurrent Neural Networks Tutorial》对于RNN的介绍非常直观,里面手把手地带领读者利用python实现一个RNN语言模型,强烈推荐。为了不重复作者 Denny Britz的劳动,本篇将简要介绍RNN,并强调RNN训练的过程与多层感知器的训练差异不大(至少比CNN简单),希望能给读者一定的信心——只要你理解了多层感知器,理解RNN便不是事儿:-)。 RNN的基本结构 首先有请读者看看我们的递归神经网络的容貌: 乍一看,好复杂的大家伙,没事,老样子,看我如何慢慢将其拆解,正所谓见招拆招,我们来各个击破。 上图左侧是递归神经网络的原始结构,如果先抛弃中间那个令人生畏的闭环,那其实就是简单”输入层=>隐藏层=>输出层”的三层结构

tensorflow学习笔记——ResNet

自闭症网瘾萝莉.ら 提交于 2019-12-28 09:06:56
  自2012年AlexNet提出以来,图像分类、目标检测等一系列领域都被卷积神经网络CNN统治着。接下来的时间里,人们不断设计新的深度学习网络模型来获得更好的训练效果。一般而言,许多网络结构的改进(例如从VGG到ResNet可以给很多不同的计算机视觉领域带来进一步性能的提高。   ResNet(Residual Neural Network)由微软研究员的 Kaiming He 等四位华人提出,通过使用 Residual Uint 成功训练152层深的神经网络,在 ILSVRC 2015比赛中获得了冠军,取得了 3.57%的top-5 的错误率,同时参数量却比 VGGNet低,效果非常突出,因为它“简单与实用”并存,之后很多方法都建立在ResNet50或者ResNet101的基础上完成的,检测,分割,识别等领域都纷纷使用ResNet,Alpha zero 也使用了ResNet,所以可见ResNet确实很好用。ResNet的结构可以极快的加速超深神经网络的训练,模型的准确率也有非常大的提升。之前我们学习了Inception V3,而Inception V4则是将 Inception Module和ResNet相结合。可以看到ResNet是一个推广性非常好的网络结构,甚至可以直接应用到 Inception Net中。 1,Highway Network简介   在ResNet之前

神经网络误差反向传播

倖福魔咒の 提交于 2019-12-27 17:30:05
神经网络的反向传播 对于下面的神经网络,输入为 \(x_1\) , \(x_2\) , \(x_3\) ,输出为 \(y_1\) , \(y_2\) , \(y_3\) ,激活函数 \(f\) 为逻辑斯蒂函数即 \(f=\frac{1}{1+e^{-z}}\) ,如何用梯度下降法求解呢? 首先定义这里的损失函数: \(L(\theta)=\frac{1}{2}\sum_{i}{(y_i-\widehat{y_{i}})^2}\) 要使用梯度下降,先复习一下求导的链式法则(Chain Rule): 1.若 \(y=g(x),z=h(y)\) ,那么 \(\frac{d z}{d x}=\frac{d z}{d y}\frac{d y}{d x}\) 。 2.若 \(x=g(s),y=h(s),z=k(x,y)\) ,那么 \(\frac{dz}{ds}=\frac{\partial z}{\partial y}\frac{\partial y}{\partial s}+\frac{\partial z}{\partial x}\frac{\partial x}{\partial s}\) 。 其实梯度下降的想法就是通过求梯度,得到在当前位置参数引起函数变化的方向,然后向使函数下降的方向来更新参数,如此不停的迭代更新参数,直到达到停止条件。 同样我们也计算梯度 \(\frac{

\"多层感知器\"--MLP神经网络算法

烈酒焚心 提交于 2019-12-27 11:23:09
提到人工智能(Artificial Intelligence,AI),大家都不会陌生,在现今行业领起风潮,各行各业无不趋之若鹜,作为技术使用者,到底什么是AI,我们要有自己的理解. 目前,在人工智能中,无可争议的是深度学习占据了统治地位,,其在图像识别,语音识别,自然语言处理,无人驾驶领域应用广泛. 如此,我们要如何使用这门技术呢?下面我们来一起了解"多层感知器",即MLP算法,泛称为神经网络. 神经网络顾名思义,就像我们人脑中的神经元一样,为了让机器来模拟人脑,我们在算法中设置一个个节点,在训练模型时,输入的特征与预测的结果用节点来表示,系数w(又称为"权重")用来连接节点,神经网络模型的学习就是一个调整权重的过程,训练模型一步步达到我们想要的效果. 理解了原理,下面来上代码直观看一下: 1.神经网络中的非线性矫正 每个输入数据与输出数据之间都有一个或多个隐藏层,每个隐藏层包含多个隐藏单元. 在输入数据和隐藏单元之间或隐藏单元和输出数据之间都有一个系数(权重). 计算一系列的加权求和和计算单一的加权求和和普通的线性模型差不多. 线性模型的一般公式: y = w[0]▪x[0]+w[1]▪x[1] + ▪▪▪ + w[p]▪x[p] + b 为了使得模型比普通线性模型更强大,所以我们要进行一些处理,即 非线性矫正 (rectifying nonlinearity),简称为

浅谈chainer框架

会有一股神秘感。 提交于 2019-12-27 10:30:35
一 chainer基础 Chainer是一个专门为高效研究和开发深度学习算法而设计的开源框架。 这篇博文会通过一些例子简要地介绍一下Chainer,同时把它与其他一些框架做比较,比如Caffe、Theano、Torch和Tensorflow。 大多数现有的深度学习框架是在模型训练之前构建计算图。 这种方法是相当简单明了的,特别是对于结构固定且分层的神经网络(比如卷积神经网络)的实现。 然而,现在的复杂神经网络(比如循环神经网络或随机神经网络)带来了新的性能改进和新的应用。虽然现有的框架可以用于实现这些复杂神经网络,但是它们有时需要一些(不优雅的)编程技巧,这可能会降低代码的开发效率和可维护性。 而Chainer的方法是独一无二的:即在训练时“实时”构建计算图。 这种方法可以让用户在每次迭代时或者对每个样本根据条件更改计算图。同时也很容易使用标准调试器和分析器来调试和重构基于Chainer的代码,因为Chainer使用纯Python和NumPy提供了一个命令式的API。 这为复杂神经网络的实现提供了更大的灵活性,同时又加快了迭代速度,提高了快速实现最新深度学习算法的能力。 以下我会介绍Chainer是如何工作的,以及用户可以从中获得什么样的好处。 Chainer 是一个基于Python的独立的深度学习框架。 不同于其它基于Python接口的框架(比如Theano和TensorFlow

1-1 机器学习和深度学习综述

ⅰ亾dé卋堺 提交于 2019-12-26 00:33:31
人工智能\机器学习和深度学习的概念及关系 人工智能、机器学习和深度学习的概念在近些年十分火热,但很多从业者也难以说清它们之间的关系,外行人更是雾里看花。学习深度学习,需要先从三个概念的正本清源开始。 三者覆盖的技术范畴是逐层递减的,人工智能是最宽泛的概念,机器学习则是实现人工智能的一种方式,也是目前较有效的方式。深度学习是机器学习算法中最热的一个分支,在近些年取得了显著的进展,并代替了多数传统机器学习算法。所以,三者的关系可用下图表示,人工智能 > 机器学习 > 深度学习。 图1:人工智能、机器学习和深度学习三者之间的概念范围 如字面含义,人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的科学。由于这个定义只阐述了目标,而没限定方法。所以,实现人工智能存在的诸多方法和分支,导致其变成一个“大杂烩”式的学科。 与此不同,机器学习,尤其是监督学习则有更加明确的指代。机器学习是专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。这句话有点“云山雾罩”的感觉,让人不知所云。 机器学习的实现步骤可以分成两步,训练和预测。这两个专业名词类似于归纳和演绎的含义。归纳是从具体案例中抽象一般规律,机器学习中的“训练”亦是如此。从一定数量的样本(已知模型输入 X X X 和模型输出 Y Y Y )中,学习出输出 Y

反向传播

好久不见. 提交于 2019-12-23 19:50:13
说明 学习深度学习的过程中,遇到了一个用例子讲解反向传播算法的博文,简单粗暴容易理解,很适合我这种小白,所以打算翻译一下分享,英文水平有限,翻译不对的地方请告知。 原文地址在这 。下面是译文。 背景 反向传播在神经网络的训练中是一种经常被用到的算法。关于反向传播算法网上有很多讲解,但是很少有用真实的数字为大家举例子来解释的。在本篇博文中,我将努力用一个具体的例子来解释反向传播是怎样工作的,为了确定自己理解的是否正确,大家可以先按照自己的理解算一下。 如果这篇博文吸引到了你,你可以注册 我的时事通讯 ,在里面会张贴一些我正在研究的人工智能相关的博文。 在Python中使用反向传播 你也可以用 我写的Python脚本 玩一玩,程序已经实现了反向传播算法。 反向传播算法可视化 对于展示一个神经网络训练的交互式可视化,大家可以来我的 神经网络可视化 看一下。 一些其他的资源 如果你觉得这个教程对你是有用的且想继续学习关于神经网络的知识和它们的应用,我强烈推荐Adrian Rosebrock的教程,G etting Started with Deep Learning and Python. 总览 这个教程,我们打算用两个输入节点、两个隐藏节点和两个输出节点。另外,输出节点和隐藏节点将会包含一个偏置。(这个地方,我感觉应该是输入节点和输出节点,但是还是按照原文翻译了。) 下面是一个基本的架构

神经网络入门(python 自建)

风流意气都作罢 提交于 2019-12-22 20:23:02
训练得到θ import numpy as np import pandas as pd from keras.datasets import mnist def sigmoid(x): return 1 / (1 + np.exp(-x)) def top(x,y,o): z=x.dot(o) h=sigmoid(z) j=np.sum(y*np.log(h)+(1-y)*np.log(1-h)) return x,y,h,o,j # h 为预测,j 为代价函数 def bottom(x,y,h,o,j): s=h-y o=o-(1/x.shape[0])*(x.T).dot(s) return o # o 为修正后的参数 def begin(x,y): o=np.zeros((x.shape[1], y.shape[1])) return x,y,o # 数据准备 # x = # x1 # x2 # x3 # # y = # y1 # y2 # y3 (train_data, train_labels), (test_data, test_labels) = mnist.load_data() x=train_data.reshape(60000,784) y=np.zeros((60000,10)) for i in range(train_labels.shape[0]):