深度学习
gaoyueace
GitHub主页:https://github.com/TimeIvyace
展开
-
深度神经网络全面概述:从基本概念到实际模型和硬件基础
本文转载自:深度神经网络全面概述:从基本概念到实际模型和硬件基础本文旨在提供一个关于实现 DNN 的有效处理(efficient processing)的目标的最新进展的全面性教程和调查。作者:机器之心编译|深度神经网络(DNN)所代表的人工智能技术被认为是这一次技术变革的基石(之一)。近日,由 IEEE Fellow Joel Emer 领导的一个团队发布了一篇题为《深度神经网络的有效处理:教程转载 2017-12-05 20:14:26 · 6486 阅读 · 0 评论 -
神经网络过拟合问题-正则化
搭建的神经网络的过程中,可能会出现这样一种过程,网络在训练数据上的表现非常好但是在测试集上表现却比较差,很有可能是因为网络过拟合问题导致的这个差距。所谓过拟合,指的是当一个模型过为复杂之后,它可以很好的记忆每一个训练数据中随机噪音的部分而忘记了去学习训练数据中通用的趋势,如果一个模型中的参数比训练数据的总数还多,只要训练数据不冲突,这个模型就可以完全记住所有训练数据的结果而使得损失函数为0。 为原创 2018-01-13 10:54:55 · 2944 阅读 · 0 评论 -
如何保存训练好的神经网络直接进行测试-TensorFlow模型持久化
本文代码可在https://github.com/TimeIvyace/MNIST-TensorFlow.git中下载,文件夹为train_improved2,文件夹中一共三个py程序,同时运行mnist_train.py(用于训练)和mnist_eval.py(用于测试)即可。 注意:使用代码需要修改MNIST数据集存储位置以及神经网络存储位置。为了让神经网络训练结果可以复用,需要将训练的原创 2018-01-19 00:44:55 · 38560 阅读 · 18 评论 -
使用TensorFlow搭建CNN卷积层和池化层
下面代码中,输入图像色彩通道为3;卷积层的过滤器大小设置为5*5,深度为16,步长为1;池化层的过滤器大小设置为3*3,步长为2。import tensorflow as tf# 构建卷积层# 通过tf.get_variable的方式创建过滤器的权重和偏置项# 卷积层的参数个数之和过滤器的尺寸、深度以及当前层节点矩阵的深度有关# 声明四维矩阵,前两维为过滤器的尺寸,第三维为当前层的深度,第四维为原创 2018-01-19 22:56:22 · 4070 阅读 · 0 评论 -
使用TFRecord存取多个数据
TensorFlow提供了一种统一的格式来存储数据,就是TFRecord,它可以统一不同的原始数据格式,并且更加有效地管理不同的属性。TFRecord格式TFRecord文件中的数据都是用tf.train.Example Protocol Buffer的格式来存储的,tf.train.Example可以被定义为:message Example{ Features fea...原创 2018-02-06 16:11:40 · 3868 阅读 · 2 评论 -
使用TensorFlow-Slim实现Inception模块
注:在TensorFlow的GitHub代码库上可以找到完整的Inception-v3模型的源码(网址为https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/slim/python/slim/nets/inception_v3.py)直接使用TensorFlow原始API实现一个卷积层:with tf.vari原创 2018-03-28 10:56:31 · 1882 阅读 · 0 评论 -
Flickr30k图像标注数据集下载及使用方法
Flickr30k数据集的下载可在http://shannon.cs.illinois.edu/DenotationGraph/中填表,获取下载地址http://shannon.cs.illinois.edu/DenotationGraph/data/index.html,但是下载地址不稳定,有时会崩溃。 一般下载前两个,第一个是图像(大小为4.14G),第二个是图像所带的标注。直接...原创 2018-06-04 11:09:20 · 38466 阅读 · 26 评论 -
循环神经网络RNN的简单框架实现
循环神经网络RNN结构与全连接或者卷积神经网络结构相比,RNN比较复杂。通过阅读各种资料,觉得《TensorFlow:实战Google深度学习框架》中RNN讲的最通俗易懂,在这里将简单的总结一下书上的内容。循环神经网络的主要用途是处理和预测序列数据,为了刻画一个序列当前的输出与之前信息的关系。从网络结构上看,RNN会利用之前的信息影响后面结点的输出,也就是RNN的隐藏层之间的结点是有连接的,隐...原创 2018-05-30 14:44:13 · 6479 阅读 · 1 评论 -
使用tensorflow搭建一个简单的LSTM网络前向传播过程
长短时记忆网络LSTM可以学习到距离很远的信息,解决了RNN无法长期依赖的问题。 在TensorFlow中,LSTM结构可以被很简单的实现,tf封装了LSTM结构。以下代码就是使用tensorflow搭建的LSTM网络前向传播过程。import tensorflow as tf# 定义一个lstm结构,在tensorflow中通过一句话就能实现一个完整的lstm结构# lstm中使...原创 2018-05-30 16:03:54 · 4246 阅读 · 0 评论 -
TensorFlow迁移学习-使用谷歌训练好的Inception-v3网络进行分类
本文代码可在https://github.com/TimeIvyace/TensorFlow_Migration-learning_Inception-v3.git中下载,需要同时下载数据集和Inception-v3模型。 注:代码中文件夹放置位置需要自行修改。迁移学习是将一个数据集上训练好的网络模型快速转移到另外一个数据集上,可以保留训练好的模型中倒数第一层之前的所有参数,替换最后一层即可,在最原创 2018-01-31 21:22:20 · 6415 阅读 · 48 评论 -
在TensorFlow上使用LeNet-5模型识别MNIST数据
完整代码可在https://github.com/TimeIvyace/MNIST-TensorFlow.git中下载。文件夹为train_improved3,文件夹中一共三个py程序,mnist_inference.py定义前向传播的过程以及神经网络中的参数,mnist_train.py用于训练和mnist_eval.py用于测试。 注意:使用代码需要修改MNIST数据集存储位置以及卷积网络原创 2018-01-28 21:17:45 · 2453 阅读 · 2 评论 -
神经网络经典损失函数-交叉熵和均方误差
在神经网络中,如何判断一个输出向量和期望的向量有多接近呢?交叉熵(cross entropy)是常用的方法之一,刻画了两个概率分布之间的距离,是分类问题中使用较多的一种损失函数。 给定两个概率分布p和q,通过q来表示p的交叉熵为: 如何将神经网络前向传播得到的结果也变成概率分布,比较常用的方法为Softmax回归。 Softmax回归本身可以作为一个学习算法来优化分类结果,但在Tensor原创 2018-01-10 18:43:28 · 23184 阅读 · 2 评论 -
神经网络自定义损失函数
神经网络中损失函数定义的是损失,所有要结果利益最大化,定义的损失函数应该刻画成本或者代价。下面的公式为当预测多于真实值和预测少于真实值时有不同损失系数的损失函数: 其中yi为一个batch中第i个数据的正确答案,yi’为神经网络得到的预测值,a和b是常量。在TensorFlow中,可以使用以下代码实现:loss = tf.reduce_sunm(tf.where(tf.greater(v1,原创 2018-01-10 19:52:57 · 7783 阅读 · 5 评论 -
神经网络优化-学习率指数衰减法
在训练神经网络时,需要设置学习率(learing rate)控制参数更新的速度,学习率决定了参数每次更新的幅度,如果幅度过大,则可能导致参数在极优值的两侧来回移动;若幅度过小,又会大大降低优化速度。所以,TensorFlow提供了一种更加灵活的学习率设置方法-指数衰减法,使用tf.train.exponential_decay实现。指数衰减法的核心思想是,先使用较大的学习率来快速得到一个比较优的解,原创 2018-01-10 23:54:55 · 5936 阅读 · 1 评论 -
神经网络的滑动平均模型
若采用随机梯度下降算法训练神经网络,为了控制网络更新速度,常采用滑动平均模型进行优化,使得网络在测试数据集中表现更好。 TensorFlow提供了tf.train.ExponentialMovingAverage来实现滑动平均模型,输入参数有衰减率(decay),用于控制网络的更新速度。ExponentialMovingAverage对滑动平均的变量会生成一个影子变量,这个影子变量的初始值就是相应原创 2018-01-13 14:15:07 · 1736 阅读 · 0 评论 -
使用TensorFlow直接获取处理MNIST数据
MNIST是一个非常有名的手写体数字识别数据集,TensorFlow对MNIST数据集做了封装,可以直接调用。MNIST数据集包含了60000张图片作为训练数据,10000张图片作为测试数据,每一张图片都代表了0-9中的一个数字,图片大小都是28*28。虽然这个数据集只提供了训练和测试数据,但是为了验证训练网络的效果,一般从训练数据中划分出一部分数据作为验证数据。TensorFlow提供了一个类来处原创 2018-01-14 13:11:07 · 7872 阅读 · 0 评论 -
使用前向传播和反向传播的神经网络代码
完整代码可从https://github.com/TimeIvyace/Basic-neural-network.git中下载本代码使用监督学习的方法来更合理的设置参数取值,设置神经网络参数的过程就是神经网络的训练过程。使用监督学习的方式设置神经网络参数需要有一个标注好的训练数据集batch,监督学习最重要的思想就是,在已知答案的标注数据集上,模型给出的预测结果要尽量接近真实的答案。 在神经原创 2018-01-09 21:16:38 · 3242 阅读 · 0 评论 -
使用TensorFlow训练神经网络识别MNIST数据代码
代码可在https://github.com/TimeIvyace/MNIST-TensorFlow.git中下载,程序名为train.py。以下代码实现了使用TensorFlow搭建神经网络解决MNIST手写体数字识别问题,此神经网络使用了激活函数去线性化,本身为三层全连接结构,带有指数衰减的学习率以及L2正则化损失函数,同时使用滑动平均模型进行优化。import tensorflow原创 2018-01-15 00:32:26 · 3385 阅读 · 0 评论 -
TensorFlow变量管理-tf.get_variable和tf.variable_scope
本文代码可在https://github.com/TimeIvyace/MNIST-TensorFlow.git中下载,程序名为train_improved1.py。当编写程序较长时,文件中定义的函数的输入参数可能会很多,例如神经网络的参数:def inference(input_tensor, avg_class, weights1, biases1, weights2, biases2):当神经原创 2018-01-16 20:52:32 · 4036 阅读 · 1 评论 -
使用TensorFlow调用PTB数据集并且搭建基于LSTM的PTB语言模型
使用TensorFlow调用PTB文本数据集TensorFlow已经封装好使用PTB数据集的库函数,调用即可。以下代码为获取PTB数据集中的训练集、验证集以及测试集。新版TensorFlow中不能直接import reader,想要快速调用reader模块,可见在tensorflow中直接import reader。PTB数据集可在此下载,代码中只需data文件夹下内容。import te...原创 2018-06-26 14:40:26 · 2322 阅读 · 5 评论