python神经网络

tensorflow 神经网络基本使用

僤鯓⒐⒋嵵緔 提交于 2019-12-05 08:49:26
TF使用ANN(artificial neural network) 简介 受到生物神经网络的启发 发展历史 生物神经网络单元 逻辑运算单元:and、or、xor等运算 感知机(perceptron): h w ( x ) = s t e p ( w T ⋅ x ) //--> 多层感知机和反向传播(multi-perceptron and backpropagation) perceptron sklearn中也有感知机的库,其参数学习规则是 w n e x t s t e p i , j = w i , j + η ( y ^ j − y j ) x i //--> 其中 η //--> 是学习率 感知机与SGD很类似 逻辑斯蒂回归可以给出样本对于每一类的分类概率,而感知机则是直接根据阈值给出分类结果,因此一般在分类时,逻辑斯蒂回归相对感知机来说会常用一点 感知机是线性的,难以解决非线性问题;但是如果采用多个感知机,则可以避免这个问题 多层感知机和反向传播 感知机的激活函数是step函数,得到的结果非0即1,无法用于反向传播(需要求取微分),因此利用Logistic函数 σ ( z ) = 1 / ( 1 + e x p ( − z ) ) //--> 替代之前的step函数,这个logistic函数也被称为 激活函数 常用的激活函数有 logistic函数 双曲正切函数: t

[ch01-03]神经网络基本原理

醉酒当歌 提交于 2019-12-05 04:14:43
系列博客,原文在笔者所维护的github上: https://aka.ms/beginnerAI , 点击star加星不要吝啬,星越多笔者越努力。 前言 For things I don't know how to build, I don't understand. 如果我不能亲手搭建起来一个东西,那么我就不能理解它。 -- 美国物理学家理查德·费曼 在互联网发达的今天,很多知识都可以从网络上找到,但是网络上的博客、文章的质量参差不齐,或者重点不明确,或者直接把别人的博客抄袭过来。这种状况使得广大的初学者们学习起来很困难,甚至误入歧途,增加了学习曲线的陡峭程度。当然也有很多博主非常非常负责任,文章质量很高,只是连续度不够,正看得过瘾的时候,没有后续章节了,无法形成知识体系。 初学者也可以选择看一些教材或者理论书籍,但是,一个鸡生蛋蛋生鸡的问题出现了:如果你不懂,那么看完了理论你还是不会懂;如果你懂了,那么你就没必要看理论。这也是很多教材或者理论书籍的缺憾。 笔者也看过吴恩达老师的课,理论知识讲得由浅入深,还是非常清楚的,虽然代码示例基本没有,但仍然强烈建议大家去看。笔者的心得是:视频可以事先缓存在手机中,利用一些时间片段就可以学习了。 社会上还有一些网课,在线讲解深度学习的知识,笔者也参加了几个团购,老师和助教一般都很负责任,最后可以回看录像,下载PPT课件

开源的“谷歌AutoML杀手”来了

流过昼夜 提交于 2019-12-04 01:11:05
夏乙 发自 凹非寺 量子位 出品 | 公众号 QbitAI 让神经网络自己设计神经网络,大降机器学习门槛的Google AutoML,最近终于开始了Beta测试。 不过,很快就有同行纷纷跳出来表示不服。最新的一波来自美国德州农工大学(Texas A&M University)助理教授胡侠和他的两名博士生:金海峰、Qingquan Song。 下图从左到右,依次就是这三位: 他们不仅吐槽了Google AutoML的问题,还给出了自己的解决方案: Auto-Keras ,一个基于Keras的 开源 自动机器学习Python软件库。 胡老师和学生们所列出的Google AutoML三大缺陷,简单来说是这样的: 来源: CSDN 作者: 量子位 链接: https://blog.csdn.net/yH0VLDe8VG8ep9VGe/article/details/81396337

深度学习-神经网络

隐身守侯 提交于 2019-12-03 23:03:44
前言:前段时间学习了各种神经网络,今天做个小总结。以便以后自己复习! 一.RNN-循环神经网络 1.原理:根据“人的认知是基于过往的经验和记忆”这一观点提出。RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。如处理电影评论时,不能一次处理一条,而要将所有评论转化为一个大向量,再一次性处理。 2.结构: 每个方框可以看做是一个单元,每个单元做的事情也是一样的,用一句话解释RNN就是,一个单元结构重复使用。 3.应用:自然语言处理(NLP),文本生成(机器写小说),语言模型等。 4.简例: (1)生成莎士比亚文集:我们利用RNN循环神经网络,生成新的文本。 >>代码如下:<1>定义模型参数 <2>恢复模型 <3>结果: (2)识别mnist数据集:MNIST数据集是深度学习的经典入门demo,它是由6万张训练图片和1万张测试图片构成的,每张图片都是28*28大小(如下图),而且都是黑白色构成(这里的黑色是一个0-1的浮点数,黑色越深表示数值越靠近1),这些图片是采集的不同的人手写从0到9的数字。 在tensorflow中已经内嵌了mnist数据集,如下: >>代码如下: >>结果有: 二.CNN

一文理清深度学习前馈神经网络

杀马特。学长 韩版系。学妹 提交于 2019-12-03 15:15:08
🚙 Index 多层感知机(MLP)介绍 深度神经网络的激活函数 深度神经网络的损失函数 多层感知机的反向传播算法 神经网络的训练技巧 深度卷积神经网络 前馈神经网络(feedforward neural network)是一种最简单的 神经网络 ,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层间没有反馈。是目前应用最广泛、发展最迅速的 人工神经网络 之一。研究从20世纪60年代开始,目前理论研究和实际应用达到了很高的水平 ——百度百科 而深度学习模型,类似的模型统称是叫 深度前馈网络(Deep Feedforward Network) ,其目标是拟合某个函数f,由于从输入到输出的过程中不存在与模型自身的反馈连接,因此被称为“前馈”。常见的深度前馈网络有:多层感知机、自编码器、限制玻尔兹曼机、卷积神经网络等等。 01 多层感知机(MLP)介绍 说起 多层感知器(Multi-Later Perceptron) ,不得不先介绍下 单层感知器(Single Layer Perceptron) ,它是最简单的神经网络,包含了输入层和输出层,没有所谓的中间层(隐含层),可看下图: 也就是说,将输入向量赋予不同的权重向量,整合后加起来,并通过激活函数输出1或-1,一般单层感知机只能解决线性可分的问题,如下图: 我选择了0个隐含层

人脸识别性别的卷积神经网络

╄→尐↘猪︶ㄣ 提交于 2019-12-03 11:16:38
本文主要是实现了根据人脸识别性别的卷积神经网络,并对卷积过程中的提取特征进行了可视化. 卷积神经网络 卷积神经网络最早是为了解决图像识别的问题,现在也用在时间序列数据和文本数据处理当中,卷积神经网络对于数据特征的提取不用额外进行,在对网络的训练的过程当中,网络会自动提取主要的特征. 卷积神经网络直接用原始图像的全部像素作为输入,但是内部为非全连接结构.因为图像数据在空间上是有组织结构的,每一个像素在空间上和周围的像素是有关系的,和相距很远的像素基本上是没什么联系的,每个神经元只需要接受局部的像素作为输入,再将局部信息汇总就能得到全局信息. 权值共享和池化两个操作使网络模型的参数大幅的减少,提高了模型的训练效率. 卷积神经网络主要特点 权值共享: 在卷积层中可以有多个卷积核,每个卷积核与原始图像进行卷积运算后会映射出一个新的2D图像,新图像的每个像素都来自同一个卷积核.这就是权值共享. 池化: 降采样,对卷积(滤波)后,经过激活函数处理后的图像,保留像素块中灰度值最高的像素点(保留最主要的特征),比如进行 2X2的最大池化,把一个2x2的像素块降为1x1的像素块. 卷积网络的训练数据(112 * 92 * 3图形) 从data目录读取数据,famale存放女性图片,male存放男性图片 def read_img(list,flag=0): for i in range(len

手写神经网络Python深度学习

一个人想着一个人 提交于 2019-12-03 09:42:23
import numpy import scipy.special import matplotlib.pyplot as plt class neuralNetWork: def __init__(self,inputnodes,hiddennodes,outputnodes,learningrate): self.inodes = inputnodes self.hnodes = hiddennodes self.onodes = outputnodes self.wih = numpy.random.normal(0.0,pow(self.inodes, -0.5),(self.hnodes,self.inodes)) self.who = numpy.random.normal(0.0,pow(self.hnodes, -0.5),(self.onodes,self.hnodes)) self.lr = learningrate self.activation_function = lambda x: scipy.special.expit(x) # 激活函数 def train(self,inputs_list,targets_list): inputs = numpy.array(inputs_list,ndmin=2).T targets = numpy.array

[C1W3] Neural Networks and Deep Learning - Shallow neural networks

匿名 (未验证) 提交于 2019-12-02 23:47:01
神经网络中,我们将使用上标方括号的形式表示这些值来自于哪一层,有趣的是在约定俗成的符号传统中,在这里你所看到的这个例子,只能叫做一个两层的神经网络。原因是输入层是不算入总层数内,所以隐藏层是第一层,输出层是第二层。第二个惯例是我们将输入层称为第零层,所以在技术上,这仍然是一个三层的神经网络,因为这里有输入层、隐藏层,还有输出层。但是在传统的符号使用中,如果你阅读研究论文或者在这门课中,你会看到人们将这个神经网络称为一个两层的神经网络,因为我们不将输入层看作一个标准的层。 单个样本时,向量化图示 单个样本时,运用四行代码计算出一个简单神经网络的输出(预测)。 上一节使用的是单个样本,如果把单个样本的向量横向堆叠成矩阵,就可以计算全部样本的神经网络输出(预测)。 Pros and cons of activation functions 结果表明,如果在隐藏层上使用 tanh (双曲正切)函数效果总是优于 sigmoid 函数。因为函数值域在 -1 和 +1 的激活函数,其均值是更接近 0 均值的,而不是0.5,这会使下一层学习简单一点。 在讨论优化算法时,有一点要说明:我基本已经不用 sigmoid 激活函数了,tanh 函数在所有场合都优于 sigmoid 函数。 但有一个例外:在二分类的问题中,对于输出层,想让的数值介于 0 和 1 之间,而不是在 -1 和 +1 之间

数字识别,神经网络

元气小坏坏 提交于 2019-12-02 23:29:07
来源:https://www.numpy.org.cn/deep/basics/fit_a_line.html 数字识别 本教程源代码目录在 book/recognize_digits ,初次使用请您参考 Book文档使用说明 。 # 说明: 硬件环境要求: 本文可支持在CPU、GPU下运行 Docker镜像支持的CUDA/cuDNN版本: 如果使用了Docker运行Book,请注意:这里所提供的默认镜像的GPU环境为 CUDA 8/cuDNN 5,对于NVIDIA Tesla V100等要求CUDA 9的 GPU,使用该镜像可能会运行失败。 文档和脚本中代码的一致性问题: 请注意:为使本文更加易读易用,我们拆分、调整了train.py的代码并放入本文。本文中代码与train.py的运行结果一致,可直接运行 train.py 进行验证。 # 背景介绍 当我们学习编程的时候,编写的第一个程序一般是实现打印"Hello World"。而机器学习(或深度学习)的入门教程,一般都是 MNIST 数据库上的手写识别问题。原因是手写识别属于典型的图像分类问题,比较简单,同时MNIST数据集也很完备。MNIST数据集作为一个简单的计算机视觉数据集,包含一系列如图1所示的手写数字图片和对应的标签。图片是28x28的像素矩阵,标签则对应着0~9的10个数字。每张图片都经过了大小归一化和居中处理。

七个最流行的Python神经网络库

匿名 (未验证) 提交于 2019-12-02 22:51:08
https://www.toutiao.com/a6697243469124993550/ 由于具备包括各种各样的库、社区等在内的多种特性,Python是目前最广泛使用的语言之一。各种各样的库为神经网络和深度学习的研究和开发提供了基础的能力。这里我们列出七个最流行的Python神经网络库。 TensorFlow: TensorFlow是一个开放源码的软件库,具有灵活的体系结构使代码能部署到一个或多个CPU或GPU,而无需重写代码。TensorFlow为C++、GO、Java、JavaScript等提供稳定的Python和C API接口。 PyTorch: Pytorch是一个python包,有独特的构建神经网络的方法,具有强大的GPU加速,深度神经网络建立的能力,通常可用PyTorch来代替Numpy使用GPU的能力,或者提供更大灵活性和速度的深度学习研究平台。 NeuroLab: NeuroLab是一个简单而强大的python神经网络库,该库包含基于神经网络、训练算法和灵活的框架来创建和支持其他网络,支持多种神经网络类型和其他学习算法。 Ffnet: Ffnet(feedforward neural network)是一种快速易使用的针对python的前馈神经网络训练解决方案,可以使用多种方案进行算法的优化。 Scikit-Neural Network: 该库实现了多层神经网络