TensorFlow
gaoyueace
GitHub主页:https://github.com/TimeIvyace
展开
-
Pycharm测试Tensorflow是否安装成功
import tensorflow as tf#定义两个向量a,ba = tf.constant([1.0, 2.0], name='a')b = tf.constant([2.0, 3.0], name='b')result = a+bsess = tf.Session() #生成一个会话,通过一个会话session来计算结果#实现了一个简单的Tensorflow模型print(ses原创 2018-01-02 16:39:48 · 13258 阅读 · 12 评论 -
TensorFlow迁移学习-使用谷歌训练好的Inception-v3网络进行分类
本文代码可在https://github.com/TimeIvyace/TensorFlow_Migration-learning_Inception-v3.git中下载,需要同时下载数据集和Inception-v3模型。 注:代码中文件夹放置位置需要自行修改。迁移学习是将一个数据集上训练好的网络模型快速转移到另外一个数据集上,可以保留训练好的模型中倒数第一层之前的所有参数,替换最后一层即可,在最原创 2018-01-31 21:22:20 · 6430 阅读 · 48 评论 -
神经网络过拟合问题-正则化
搭建的神经网络的过程中,可能会出现这样一种过程,网络在训练数据上的表现非常好但是在测试集上表现却比较差,很有可能是因为网络过拟合问题导致的这个差距。所谓过拟合,指的是当一个模型过为复杂之后,它可以很好的记忆每一个训练数据中随机噪音的部分而忘记了去学习训练数据中通用的趋势,如果一个模型中的参数比训练数据的总数还多,只要训练数据不冲突,这个模型就可以完全记住所有训练数据的结果而使得损失函数为0。 为原创 2018-01-13 10:54:55 · 2956 阅读 · 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 · 38582 阅读 · 18 评论 -
使用TensorFlow搭建CNN卷积层和池化层
下面代码中,输入图像色彩通道为3;卷积层的过滤器大小设置为5*5,深度为16,步长为1;池化层的过滤器大小设置为3*3,步长为2。import tensorflow as tf# 构建卷积层# 通过tf.get_variable的方式创建过滤器的权重和偏置项# 卷积层的参数个数之和过滤器的尺寸、深度以及当前层节点矩阵的深度有关# 声明四维矩阵,前两维为过滤器的尺寸,第三维为当前层的深度,第四维为原创 2018-01-19 22:56:22 · 4093 阅读 · 0 评论 -
使用TFRecord存取多个数据
TensorFlow提供了一种统一的格式来存储数据,就是TFRecord,它可以统一不同的原始数据格式,并且更加有效地管理不同的属性。TFRecord格式TFRecord文件中的数据都是用tf.train.Example Protocol Buffer的格式来存储的,tf.train.Example可以被定义为:message Example{ Features fea...原创 2018-02-06 16:11:40 · 3881 阅读 · 2 评论 -
使用TensorFlow进行常用的图像处理-图像转为矩阵以及图像大小调整
图像编码处理 将图像转为一个三维矩阵,并使用三维矩阵形成一个图像:import tensorflow as tfimport matplotlib.pyplot as plt# 读取原始图像数据image_raw_data = tf.gfile.FastGFile("/tensorflow_google/cat.jpg", 'rb').read()with tf.Session() as s原创 2018-02-06 17:09:10 · 9777 阅读 · 0 评论 -
TensorFlow中怎样创建多个TF文件以及如何用线程输出文件队列
创建多个TFRecord文件# -*- coding: utf-8 -*-import tensorflow as tf# 创建TFRecord文件的帮助函数def _int64_feature(value): return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))# num_shards定义了写入原创 2018-02-07 10:30:27 · 1702 阅读 · 0 评论 -
使用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 · 1889 阅读 · 0 评论 -
使用tensorflow搭建一个简单的LSTM网络前向传播过程
长短时记忆网络LSTM可以学习到距离很远的信息,解决了RNN无法长期依赖的问题。 在TensorFlow中,LSTM结构可以被很简单的实现,tf封装了LSTM结构。以下代码就是使用tensorflow搭建的LSTM网络前向传播过程。import tensorflow as tf# 定义一个lstm结构,在tensorflow中通过一句话就能实现一个完整的lstm结构# lstm中使...原创 2018-05-30 16:03:54 · 4254 阅读 · 0 评论 -
在tensorflow中直接import reader
在使用ptb数据库时,代码中会有导入模块reader来读取ptb数据。 在旧版tensorflow中会有专门的reader模块,如下:from tensorflow.models.rnn.ptb import reader而在新版tensorflow中,ptb相关函数无法找到,所以无法直接从tensorflow中导入reader模块。下面介绍如何快速的在tensorflow中直接im...原创 2018-06-13 17:12:53 · 3855 阅读 · 2 评论 -
在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 · 2463 阅读 · 2 评论 -
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 · 4049 阅读 · 1 评论 -
使用TensorFlow训练神经网络识别MNIST数据代码
代码可在https://github.com/TimeIvyace/MNIST-TensorFlow.git中下载,程序名为train.py。以下代码实现了使用TensorFlow搭建神经网络解决MNIST手写体数字识别问题,此神经网络使用了激活函数去线性化,本身为三层全连接结构,带有指数衰减的学习率以及L2正则化损失函数,同时使用滑动平均模型进行优化。import tensorflow原创 2018-01-15 00:32:26 · 3401 阅读 · 0 评论 -
神经网络前向传播算法
#前向传播算法的神经网络,输入为2个参数,隐藏层为3个参数,输出为1个参数import tensorflow as tf#声明w1、w2两个变量,通过设定seed参数随机种子,随机种子相同,则每次使用此代码都生成相同的随机数#stddev为标准差,没有mean设定均值,则均值默认为0w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=原创 2018-01-08 23:30:52 · 556 阅读 · 0 评论 -
神经网络经典损失函数-交叉熵和均方误差
在神经网络中,如何判断一个输出向量和期望的向量有多接近呢?交叉熵(cross entropy)是常用的方法之一,刻画了两个概率分布之间的距离,是分类问题中使用较多的一种损失函数。 给定两个概率分布p和q,通过q来表示p的交叉熵为: 如何将神经网络前向传播得到的结果也变成概率分布,比较常用的方法为Softmax回归。 Softmax回归本身可以作为一个学习算法来优化分类结果,但在Tensor原创 2018-01-10 18:43:28 · 23227 阅读 · 2 评论 -
神经网络自定义损失函数
神经网络中损失函数定义的是损失,所有要结果利益最大化,定义的损失函数应该刻画成本或者代价。下面的公式为当预测多于真实值和预测少于真实值时有不同损失系数的损失函数: 其中yi为一个batch中第i个数据的正确答案,yi’为神经网络得到的预测值,a和b是常量。在TensorFlow中,可以使用以下代码实现:loss = tf.reduce_sunm(tf.where(tf.greater(v1,原创 2018-01-10 19:52:57 · 7813 阅读 · 5 评论 -
神经网络优化-学习率指数衰减法
在训练神经网络时,需要设置学习率(learing rate)控制参数更新的速度,学习率决定了参数每次更新的幅度,如果幅度过大,则可能导致参数在极优值的两侧来回移动;若幅度过小,又会大大降低优化速度。所以,TensorFlow提供了一种更加灵活的学习率设置方法-指数衰减法,使用tf.train.exponential_decay实现。指数衰减法的核心思想是,先使用较大的学习率来快速得到一个比较优的解,原创 2018-01-10 23:54:55 · 5961 阅读 · 1 评论 -
神经网络的滑动平均模型
若采用随机梯度下降算法训练神经网络,为了控制网络更新速度,常采用滑动平均模型进行优化,使得网络在测试数据集中表现更好。 TensorFlow提供了tf.train.ExponentialMovingAverage来实现滑动平均模型,输入参数有衰减率(decay),用于控制网络的更新速度。ExponentialMovingAverage对滑动平均的变量会生成一个影子变量,这个影子变量的初始值就是相应原创 2018-01-13 14:15:07 · 1751 阅读 · 0 评论 -
使用TensorFlow直接获取处理MNIST数据
MNIST是一个非常有名的手写体数字识别数据集,TensorFlow对MNIST数据集做了封装,可以直接调用。MNIST数据集包含了60000张图片作为训练数据,10000张图片作为测试数据,每一张图片都代表了0-9中的一个数字,图片大小都是28*28。虽然这个数据集只提供了训练和测试数据,但是为了验证训练网络的效果,一般从训练数据中划分出一部分数据作为验证数据。TensorFlow提供了一个类来处原创 2018-01-14 13:11:07 · 7883 阅读 · 0 评论 -
TensorFlow计算模型-计算图
TensorFlow中的所有计算都会被转化为计算图上的节点,每一个节点都是一个运算。不同计算图上的张量(可以简单的被理解为多维数组)和运算都不会共享,以下代码示意了如何在不同计算图上定义和使用变量。import tensorflow as tfg1 = tf.Graph()with g1.as_default(): #此时将g1设为默认图 # 在计算图个g1中定义变量"v"原创 2018-01-05 19:38:20 · 650 阅读 · 0 评论 -
TensorFlow数据模型-张量
张量是TensorFlow管理数据的形式,可以被简单的理解为多维数组。零阶张量表示标量,一阶张量表示向量,n阶张量表示n维数组。张量并没有保存数字,保存的是运算结果的引用。例如:import tensorflow as tf#定义两个向量a,b#tf.constant是一个计算,这个计算的结果为一个张量,保存在变量a,b中a = tf.constant([1.0, 2.0], na原创 2018-01-06 14:21:52 · 441 阅读 · 0 评论 -
使用前向传播和反向传播的神经网络代码
完整代码可从https://github.com/TimeIvyace/Basic-neural-network.git中下载本代码使用监督学习的方法来更合理的设置参数取值,设置神经网络参数的过程就是神经网络的训练过程。使用监督学习的方式设置神经网络参数需要有一个标注好的训练数据集batch,监督学习最重要的思想就是,在已知答案的标注数据集上,模型给出的预测结果要尽量接近真实的答案。 在神经原创 2018-01-09 21:16:38 · 3361 阅读 · 0 评论 -
TensorFlow运行模型-会话
TensorFlow中使用会话(session)来执行定义好的运算,会话拥有并管理TensorFlow程序运行时的所有资源,当计算完成之后需要关闭回来帮助系统回收资源。 可以明确调用会话生成函数和关闭函数:import tensorflow as tf#定义两个向量a,ba = tf.constant([1.0, 2.0], name='a')b = tf.constant([2原创 2018-01-06 16:34:20 · 1896 阅读 · 0 评论 -
使用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 · 2343 阅读 · 5 评论