之前我们学习过用CNN(卷积神经网络)来识别手写字,在CNN中是把图片看成了二维矩阵,然后在二维矩阵中堆叠高度值来进行识别. 而在RNN中增添了时间的维度,因为我们会发现有些图片或者语言或语音等会在时间轴上慢慢展开,有点类似我们大脑认识事物时会有相关的短期记忆. 这次我们使用RNN来识别手写数字. 首先导入数据并定义各种RNN的参数: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_dat…
前面我们学习过回归问题,比如对于房价的预测,因为其预测值是个连续的值,因此属于回归问题. 但还有一类问题属于分类的问题,比如我们根据一张图片来辨别它是一只猫还是一只狗.某篇文章的内容是属于体育新闻还是经济新闻等,这个结果是有一个全集的离散值,这类问题就是分类问题. 我有时会把回归问题看成是分类问题,比如对于房价值的预测,在实际的应用中,一般不需要把房价精确到元为单位的,比如对于均价,以上海房价为例,可以分为:5000-10万这样的一个范围段,并且以1000为单位就可以了,尽管这样分出了很多类,但…
在机器学习中可能会存在过拟合的问题,表现为在训练集上表现很好,但在测试集中表现不如训练集中的那么好. 图中黑色曲线是正常模型,绿色曲线就是overfitting模型.尽管绿色曲线很精确的区分了所有的训练数据,但是并没有描述数据的整体特征,对新测试数据的适应性较差. 一般用于解决过拟合的方法有增加权重的惩罚机制,比如L2正规化,但在本处我们使用tensorflow提供的dropout方法,在训练的时候, 我们随机忽略掉一些神经元和神经联结 , 使这个神经网络变得"不完整". 用一个不完整…
前面我们曾有篇文章中提到过关于用tensorflow训练手写2828像素点的数字的识别,在那篇文章中我们把手写数字图像直接碾压成了一个784列的数据进行识别,但实际上,这个图像是2828长宽结构的,我们这次使用CNN卷积神经网络来进行识别. 卷积神经网络我的理解是部分模仿了人眼的功能. 我们在看一个图像时不是一个像素点一个像素点去分辨的,我们的眼睛天然地具有大局观,我们看到某个图像时自动地会把其中的细节部分给聚合起来进行识别,相反,如果我们用个放大镜看到其中的各个像素点时反而不知道这是啥东西了.…
本节主要用一个例子来讲述一下基本的tensorflow用法. 在这个例子中,我们首先伪造一些线性数据点,其实这些数据中本身就隐藏了一些规律,但我们假装不知道是什么规律,然后想通过神经网络来揭示这个规律. 伪造数据 import numpy as np # 创建100个随机数 x_data = np.random.rand(100).astype(np.float32) # 创建最终要模拟的线性公式 y_data = x_data * 0.1 + 0.3 创建模型 在伪造数据之后,我们当作不知道这…
tensorflow自带了可视化的工具:Tensorboard.有了这个可视化工具,可以让我们在调整各项参数时有了可视化的依据. 本次我们先用Tensorboard来可视化Tensorflow的结构. 在输出tensorflow结构的关键步骤是: writer = tf.summary.FileWriter("E:/todel/data/tensorflow", sess.graph) 这个函数中把当前的tensorflow的结构图输出到指定的目录下. 而为了能够使输出的结构能够有一定…
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程.TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统. 安装 在windows中我们以最简单的方式进行安装. C:\> pip3 install --upgrade tensorflow 如果你机器有GPU的话,可以用如…
上个文章中讲述了tensorflow中如何定义变量以及如何读取变量的方式,本节主要讲述关于传入值. 变量主要用于在tensorflow系统中经常会被改变的值,而对于传入值,它只是当tensorflow系统运行时预先设置的值,然后在运行期间不会被改变,有点类似函数中的不可变的输入参数. 传入值同常量之间的差别是:常量在tensorflow系统运行之前就已经确定了的值,无法对其进行任何的改变. 而传入值或称为placeholder是在系统运行前需要对其进行设置相应的值. 我们来看一个例子,这个例子只…
上次我们添加了一个add_layer函数,这次就要创建一个神经网络来预测/拟合相应的数据. 下面我们先来创建一下虚拟的数据,这个数据为二次曲线数据,但同时增加了一些噪点,其图像为: 相应的创建这些伪造数据的代码为: import numpy as np # 创建一列(相当于只有一个属性值),300行的x值,这里np.newaxis用于新建出列数据,使其shape为(300, 1) x_data = np.linspace(-1, 1, 300)[:,np.newaxis] # 增加噪点,噪点的均…
前面我们用Tensorboard显示了tensorflow的程序结构,本节主要用Tensorboard显示各个参数值的变化以及损失函数的值的变化. 这里的核心函数有: histogram 例如: tf.summary.histogram(layer_name + "/weights", Weights) 这里用tf.summary.histogram函数来显示二维数据在不同网络层的变化情况,其中第一个参数是名字,可以用/来进行分层显示,第二个参数就是相应变量的值. scalar tf.…
在程序中定义变量很简单,只要定义一个变量名就可以,但是tensorflow有点类似在另外一个世界,因此需要通过当前的世界中跟tensorlfow的世界中进行通讯,来告诉tensorflow的世界中定义了一个变量,这个通讯的空间就是tf类,看个例子就应该能明白: import tensorflow as tf state = tf.Variable(0) print(state.name) 这里定义了一个tensorflow变量,并且设置了一个初始值0,在tensorflow世界中每个变量也有其相…
在tensorflow中,当定义好结构后,就要通过tf.session()来建立运行时的会话. 本例子应该不难理解,我们用tensorflow来计算一下一个1行2列的矩阵和2行1列矩阵的乘积: import tensorflow as tf # 1行2列的矩阵 mat1 = tf.constant([[3, 3]]) # 2行1列的矩阵 mat2 = tf.constant([[2], [2]]) out = tf.matmul(mat1, mat2) sess = tf.Session() p…
当我们回到家,如果家里有异样,我们能够很快就会发现家中的异样,那是因为这些异常的摆设在我们的大脑中会产生较强的脑电波. 当我们听到某个单词,我们大脑中跟这个单词相关的神经元会异常兴奋,而同这个单词无关的神经元就不会有很大的刺激. 这个就是大脑中的激励函数. 有了激励函数,我们才会对外部的刺激产生非线性的反应,有的神经元反应比较强烈,而有的神经元基本没有反应. 在神经网络中激励函数有很多,但作为初学的我们,只要了解其中常用的几个就可以了. relu 这是一种使用比较广泛的并且计算量也很少的激励函数…
本节主要定义个添加层的函数,在深度学习中是通过创建多层神经网络来实现的,因此添加层的函数会被经常用到: import tensorflow as tf def add_layer(inputs, in_size, out_size, activation_function=None): """ 添加层 :param inputs: 输入数据 :param in_size: 输入数据的列数 :param out_size: 输出数据的列数 :param activation_f…
这次我们把上次的结果进行可视化显示,我们会把神经网络的优化过程以图像的方式展示出来,方便我们了解神经网络是如何进行优化的. 首先,我们把测试数据显示出来: # 显示测试数据 fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.scatter(x_data, y_data) plt.ion() plt.show() 这里为了能够更加灵活地控制显示的图形,因此增加了subplot,这样方便对其中画出的线进行删除. plt.ion()开启了交互模式,…
当我们对模型进行了训练后,就需要把模型保存起来,便于在预测时直接用已经训练好的模型进行预测. 保存模型的权重和偏置值 假设我们已经训练好了模型,其中有关于weights和biases的值,例如: import tensorflow as tf # 保存到文件 W = tf.Variable([[1, 2, 3], [3, 4, 5]], dtype=tf.float32, name='weights') b = tf.Variable([[1, 2, 3]], dtype=tf.float32,…
tensorflow中的优化器主要是各种求解方程的方法,我们知道求解非线性方程有各种方法,比如二分法.牛顿法.割线法等,类似的,tensorflow中的优化器也只是在求解方程时的各种方法. 比较常用的是:·tf.train.GradientDescentOptimizer()·梯度下降优化器,之前我们一直在使用. 又比如:tf.train.MomentumOptimizer,它会有短时记忆的优化功能. 更多的关于优化器的文档参考(需FQ):https://www.tensorflow.org/a…
欢迎大家关注我们的网站和系列教程:http://panchuang.net/ ,学习更多的机器学习.深度学习的知识! 目录: 前言 RNN知识结构 简单循环神经网络 RNN的基本结构 RNN的运算过程和参数更新 一.前言 前馈神经网络不考虑数据之间的关联性,网络的输出只和当前时刻网络的输入相关.然而在解决很多实际问题的时候我们发现,现实问题中存在着很多序列型的数据,例如文本.语音以及视频等.这些序列型的数据往往都是具有时序上的关联性的,既某一时刻网络的输出除了与当前时刻的输入相关之外,还与之前某…
1. RNN循环神经网络 1.1 结构 循环神经网络(recurrent neural network,RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络.RNN的主要用途是处理和预测序列数据.全连接的前馈神经网络和卷积神经网络模型中,网络结构都是从输入层到隐藏层再到输出层,层与层之间是全连接或部分连接的,但每层之间的节点是无连接的. 图 11 RNN-rolled 如图 11所示是一个典型的循环神经网络.对于循环神经网络,一个非常重要的概念就是时刻.循环神经网…
1. 针对机器学习/深度神经网络“记忆能力”的讨论 0x1:数据规律的本质是能代表此类数据的通用模式 - 数据挖掘的本质是在进行模式提取 数据的本质是存储信息的介质,而模式(pattern)是信息的一种表现形式.在一个数据集中,模式有很多不同的表现形式,不管是在传统的机器学习训练的过程,还是是深度学习的训练过程,本质上都是在进行模式提取. 而从信息论的角度来看,模式提取也可以理解为一种信息压缩过程,通过将信息从一种形式压缩为另一种形式.压缩的过程不可避免会造成信息丢失. 笔者这里列举几种典型的体…
 自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1.1  RNN循环神经网络(recurrent neural network) 1.1.1          RNN简介 RNN循环神经网络会循环的加入上一时刻的状态作为输入,得出下一时刻的输出.解决的是具有时序关联性的问题,例如股票趋势预测,需要上一时刻的股票价格输入作为下一时刻的输出,又比如输入预测,当你输入I am s…
CNN 卷积神经网络 卷积 池化 https://www.cnblogs.com/peng8098/p/nlp_16.html 中有介绍 以数据集MNIST构建一个卷积神经网路 from keras.layers import Dense,Activation,Conv2D,MaxPooling2D,Flatten from keras.models import Model,Sequential from keras.datasets import mnist from keras.utils…
前面我们针对电影评论编写了二分类问题的解决方案. 这里对前面的这个方案进行一些改进. 分批训练 model.fit(x_train, y_train, epochs=20, batch_size=512) 这里在训练时增加了一个参数batch_size,使用 512 个样本组成的小批量,将模型训练 20 个轮次. 这个参数可以看成是在训练时不一次性在全部的训练集上进行,而是针对其中的512个题目分批次进行训练.有点类似做512道题目进行训练,然后看结果进行调整,而不是一次性做好25000道题目然…
https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?以及他们的主要用途是什么?只知道CNN是局部感受和参数共享,比较适合用于图像这方面.刚入门的小白真心   个人觉得CNN.RNN和DNN不能放在一起比较.DNN是一个大类,CNN是一个典型的空间上深度的神经网络,RNN是在…
http://cs231n.github.io/neural-networks-1 https://arxiv.org/pdf/1603.07285.pdf https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner's-Guide-To-Understanding-Convolutional-Neural-Networks/ Applied Deep Learning - Part 1: Artificial Neural Ne…
关于 RNN 循环神经网络的反向传播求导 本文是对 RNN 循环神经网络中的每一个神经元进行反向传播求导的数学推导过程,下面还使用 PyTorch 对导数公式进行编程求证. RNN 神经网络架构 一个普通的 RNN 神经网络如下图所示: 其中 \(x^{\langle t \rangle}\) 表示某一个输入数据在 \(t\) 时刻的输入:\(a^{\langle t \rangle}\) 表示神经网络在 \(t\) 时刻时的hidden state,也就是要传送到 \(t+1\) 时刻的值:\…
RNN适用场景 循环神经网络(Recurrent Neural Network)适合处理和预测时序数据 RNN的特点 RNN的隐藏层之间的节点是有连接的,他的输入是输入层的输出向量.extend(上一时刻隐藏层的状态向量). demo:单层全连接网络作为循环体的RNN 输入层维度:x 隐藏层维度:h 每个循环体的输入大小为:x+h 每个循环体的输出大小为:h 循环体的输出有两个用途: 下一时刻循环体的输入的一部分 经过另一个全连接神经网络,得到当前时刻的输出 序列长度 理论上RNN支持任意序列长…
欢迎大家关注我们的网站和系列教程:http://panchuang.net/ ,学习更多的机器学习.深度学习的知识! [前言]:在前面的内容里,我们已经学习了循环神经网络的基本结构和运算过程,这一小节里,我们将用TensorFlow实现简单的RNN,并且用来解决时序数据的预测问题,看一看RNN究竟能达到什么样的效果,具体又是如何实现的. 在这个演示项目里,我们使用随机生成的方式生成一个数据集(由0和1组成的二进制序列),然后人为的增加一些数据间的关系.最后我们把这个数据集放进RNN里,让RNN去…
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程,QQ:231469242) https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share https://blog.csdn.net/eddy_zheng/article/details/50763648 1.…
本文转载修改自:知乎-科言君 感知机(perceptron) 神经网络技术起源于上世纪五.六十年代,当时叫感知机(perceptron),拥有输入层.输出层和一个隐含层.输入的特征向量通过隐含层变换达到输出层,在输出层得到分类结果.早期感知机的推动者是Rosenblatt.但是,Rosenblatt的单层感知机有一个严重得不能再严重的问题,即它对稍复杂一些的函数都无能为力(比如最为典型的"异或"操作). 随着数学的发展,这个缺点直到上世纪八十年代才被Rumelhart.Williams…