TensorFlow
文章平均质量分 55
Barcelooooooooona
这个作者很懒,什么都没留下…
展开
-
TensorFlow学习记录:GoogleNet模型
GoogleNet最核心的亮点就是它的Inception,最大的特点就是去除了最后的全连接层,用全局平均池化层(即使用与特征图尺寸相同的过滤器来做平均池化)来取代它。这么做的原因是:在以往的AlexNet和VGGNet网络中,全连接层几乎占据90%的参数量,占用了过多的运算量内存使用率,而且还会引起过拟合。GoogleNet的做法是去除全连接层,使得模型训练更快并且减轻了过拟合。之后Googl...原创 2020-02-29 11:33:36 · 322 阅读 · 0 评论 -
TensorFlow学习记录:VGGNet卷积神经网络模型
1.VGGNet模型结构简介VGGNet是由牛津大学计算机视觉几何组(Visual Geomety Group,VGG)和Google Deepmind公司的研究员合作研发的深度卷积神经网络,VGG的成员Karen Simonyan和Andrew Zisserman在2014年撰写的论文《Very Deep Convolutional Networks for Large-Scale Image...原创 2020-02-29 11:32:16 · 932 阅读 · 0 评论 -
TensorFlow学习记录:正则化
一般情况下,在机器学习中,不管是分类还是回归任务,为了不因特征过多而导致过拟合,一般通过减少特征或者惩罚不重要特征的权重来缓解这个问题。正则化(Regularization)是我们为了避免过拟合问题常常采用的一种方法,其核心思想就是在损失函数中加入被称为正则化的惩罚。这样我们就可以筛选出最有效的特征,较少特征权重,防止过拟合。假设模型在训练集上的损失函数为J(w)J(w)J(w)(注意,这里w...原创 2019-10-13 22:22:19 · 186 阅读 · 0 评论 -
TensorFlow学习记录:目标检测算法YOLO V3前向传播
YOLO模型是目标检测领域的经典模型,目前已经发展到V3版本。经过一周的学习,已经基本掌握了对YOLO V3前向传播的理解。下面分享一下YOLO V3的前向传播流程。1.YOLO V3模型的结构与样本YOLO V3模型属于监督式训练模型。该模型所使用的样本需要包含两部分的标注信息。物体的位置坐标(矩形框)物体所属的类别将样本中的图片作为输入,将图片上的物体类别及位置坐标作为标签,对模...原创 2019-08-24 17:32:33 · 611 阅读 · 0 评论 -
TensorFlow学习记录:用TensorFlow_Serving部署模型并进行远程使用
训练好的模型在使用过程中有多种场景。TensorFlow中提供了一种TF_Serving接口,可以将带有签名的模型部署在远端服务器上,并以服务的方式对外提供借口。之前学习过saved_model模块的用法(详情请点击这里),简单点说saved_model模块就是为了实现TensorFlow Serving(以下简称TF_Serving)功能的。gRPC服务、HTTP/REST API是TF_Se...原创 2019-08-15 16:24:46 · 1376 阅读 · 0 评论 -
TensorFlow学习记录:用TF_Serving将人脸识别模型Inception ResNet V2部署到服务器上
部署前先到这里下载已训练好的Inception ResNet V2模型。下载后解压得到如下图所示文件将上图所示pb文件用saved_model模块导出为带有签名的模型文件import tensorflow as tfimport numpy as npfrom tensorflow.python.saved_model import tag_constantsmodel_path ...原创 2019-08-18 15:12:42 · 955 阅读 · 3 评论 -
TensorFlow学习记录:交叉熵损失函数和Softmax函数
1.交叉熵函数在解决深度学习领域的一些问题时,交叉熵用于刻画两个概率分布向量之间的距离,是分类问题中使用比较广泛的一种损失函数。假设有两个概率分布值P和Q是等长的两个向量,可以使用以下公式来计算二者之间的交叉熵值:H(P,Q)=−∑xP(x)logQ(x)H(P,Q)=-\sum_{x}P(x)logQ(x)H(P,Q)=−∑xP(x)logQ(x)因为可以将交叉熵理解为描述了概率分布Q对...原创 2019-09-07 19:21:00 · 1235 阅读 · 0 评论 -
TensorFlow学习记录:常用的梯度下降算法
一般情况下,平常所说的训练神经网络指的都是使用框架里面体提供的优化器(也可以称作梯度下降函数)去降低loss值。梯度下降算法简单点理解就是让损失函数loss对神经网络内的参数进行求导(链式求导),通过不停地更新网络内的参数使得损失值loss沿着损失函数减小的方向移动,最终让损失值loss达到尽可能小的过程。求解梯度下降的过程比较复杂难懂,并且梯度下降方法也有很多中,幸运的是TensorFlow中...原创 2019-09-08 16:03:15 · 512 阅读 · 0 评论 -
TensorFlow学习记录:学习率
学习率(Learning Rate)通常用于控制梯度下降中参数的更新速度(或幅度)。通常情况下梯度下降优化器都要求设置一个学习率来控制参数的更新速度。如果学习率过小,虽然最终能达到损失函数最小值,但训练过程会耗费太多时间,如果学习率过大,则训练速度会提升,但可能会出现参数在最优值旁边不停地来回“摆动”,而不会收敛到一个极小值。(1)学习率过小的情况:假设有一个损失函数L(w)=w2L(w)=...原创 2019-09-09 17:02:38 · 475 阅读 · 0 评论 -
TensorFlow学习记录:指数滑动平均
为了在采用随机梯度下降算法训练神经网络时提高最终模型在测试数据上的表现,TensorFlow提供了一种在变量上使用指数滑动平均的方法。实现一个变量的指数滑动平均需要首先通过tf.train.ExponentialMovingAverage()函数初始化一个滑动平均类,同时需要向函数提供一个衰减率(Decay)参数,这个衰减率将用于控制模型更新的速度。滑动平均算法会对每一个变量维护一个影子变量,...原创 2019-09-14 20:04:31 · 437 阅读 · 0 评论 -
TensorFlow学习记录:梯度剪裁
TensorFlow用于梯度剪裁的函数为1.tf.clip_by_norm()tf.clip_by_norm( t, clip_norm, axes=None, name=None)这个函数用于标准化张量t,使其的L2范数小于或等于clip_norm。标准化公式为t=t∗clipnorml2norm(t) t = \frac{t*clipnorm}{...原创 2019-09-29 16:46:59 · 466 阅读 · 0 评论 -
TensorFlow学习记录:saved_model模块的用法
TensorFlow中的saved_model模块用于生成冻结图文件,并且saved_model模块封装了平常用的Saver类。与Saver类不同的是,saved_model模块生成的模型文件集成了打标签的操作,可以更方便地部署在生产环境中。关于为什么要用saved_model模块,这篇文章讲得挺好的。请点击这里一个saved_model对象可以存储一个或多个MetaGraphDef。那什么时...原创 2019-08-14 14:51:04 · 9579 阅读 · 1 评论 -
TensorFlow学习记录:激活函数
激活函数的主要作用就是用来加入非线性因素的,以解决线性模型不能进行多分类的问题,在整个神经网络里起到非常重要的作用。因为神经网络的数学基础是处处可微的,所以选取的激活函数要能保证数据输入与输出也是可微的。神经网络中常用的激活函数有Sigmoid、Tanh和Relu等。1.Sigmoid函数Sigmoid函数的数学公式为f(x)=11+e−xf(x)=\tfrac{1}{1+e^{-x}}...原创 2019-08-19 12:59:29 · 369 阅读 · 0 评论 -
TensorFlow学习记录:读取ckpt模型里面的张量名字和读取pb模型里面的张量名字
一般情况下,我们得到一个模型后都想知道模型里面的张量,下面分别从ckpt模型和pb模型中读取里面的张量名字。1.读取ckpt模型里面的张量首先,ckpt模型需包含以下文件,一个都不能少然后编写代码,将所有张量的名字都保存到tensor_name_list_ckpt.txt文件中import tensorflow as tf#直接读取图的结构,不需要手动重新定义 meta_graph...原创 2019-08-02 10:57:14 · 1070 阅读 · 1 评论 -
TensorFlow学习记录:张量
上一篇文章讲了TensorFlow中什么是计算图,本文简单介绍下什么是张量。在一个TensorFlow程序中,如果将计算图称为TensorFlow的计算模型,那么张量则可以称为TensorFlow的数据模型,因为张量是TensorFlow管理数据的形式,也就是说,在TensorFlow程序中,所有数据都可以借助张量的形式来表示。张量,可以把它简单理解为不同维度的数组,其中零阶张量的表现形式是标...原创 2018-12-09 20:00:06 · 242 阅读 · 0 评论 -
TensorFlow学习记录:variable_scope()和name_scope()函数的区别
1.variable_scope()1.1 variable_scope() 对get_variable()的影响首先,我们在相同的variable_scope内使用get_variable()函数创建一个name属性为a的变量a1import tensorflow as tfwith tf.variable_scope("one"): a1=tf.get_variable("a",[1...原创 2018-12-11 23:48:52 · 298 阅读 · 0 评论 -
TensorFlow学习记录:用简单卷积神经网络实现Cifar10数据集分类
使用TensorFlow搭建一个简单的卷积神经网络实现Cifar10数据集分类,这个神经网络模型包括两个卷积层,两个池化层,卷积操作后在后面加三个全连层,最后一个全连层用于输出分类。整个神经网络架构图如下:名词解释名字说明输入层输入层是整个神经网络的输入。在用于图像分类的卷积神经网络中,它一般代表的是一张图片的像素矩阵。根据通道数的不同,图片像素的矩阵也有着不同的深度数...原创 2019-01-12 17:54:12 · 2342 阅读 · 7 评论 -
TensorFlow学习记录:LeNet-5卷积神经网络模型
1.1 LeNet-5卷积神经网络简介LeNet-5是一个专为手写数字识别而设计的最经典的卷积神经网络,被誉为早期卷积神经网络种最有代表行的实验系统之一,在MNIST数据集上,LeNet-5模型可以达到约99.4%的准确率。下面将会详细介绍LeNet-5卷积神经网络的结构。1.2 LeNet-5模型结构详解LeNet-5模型结构如下图所示在上图所示的模型结构中,用C代表卷积层,卷积操作的...原创 2019-05-19 16:36:26 · 1408 阅读 · 0 评论 -
TensorFlow学习记录:ResNet卷积神经网络模型
1.Residual Neural Network简介自AlexNet之后,随着卷积神经网络的不断加深(例如VGGNet和Inception V1分别有19层和22层深)以及一些优化网络性能的想法不断被提出,卷积神经网络能够达到的错误率也在逐渐下降。但是,如果只是简单的将层叠加在一起,增加网路深度,并不会起到什么作用。在增加网络深度的同时,我们还要考虑到梯度消失的问题。具体来讲,因为梯度反向传播...原创 2019-06-02 17:02:01 · 1415 阅读 · 0 评论 -
TensorFlow学习记录:LSTM及其变种
LSTM结构由Sepp Hochreiter教授和Jurgen Schmidhuber 教授于1997年提出,它本身就是一种特殊的循环结构。在一个整体的循环神经网络中,除了外部的RNN大循环(循环体是LSTM)外,还需要考虑LSTM本身单元“细胞”之间的自循环。这个自环与简单的带有tanh结构的循环体在RNN中的循环不同,单元“细胞”间的循环关系也展示了出来。下图所示为LSTM单元“细胞”结构示意...原创 2019-07-09 12:43:02 · 916 阅读 · 0 评论 -
TensorFlow学习记录:批量归一化(BatchNormalization)
批量归一化是一种加快模型收敛速度的方法,并且具有一定的泛化能力。简单点说,BatchNormalization的作用就是在深层神经网络的训练过程中使得每一层神经网络的输入保持相同的分布。因为深层神经网络在做非线性变换前的输入值Y(Y=W*x+b,Y为输入激活函数前的值,W为权重,x为输入,b为偏置),随着网络深度增加或者在训练过程中,因为输入要与权重相乘,还要经过激活函数的非线性转换,多次进行上...原创 2019-07-12 19:24:43 · 1901 阅读 · 0 评论 -
TensorFlow学习记录:MLP卷积层
Google团队提出的Inception Module结构在实现上借鉴了论文《Network in NetWork》(以下简称NIN,该论文由Min Lin和Qiang Chen等人于2014年发表)中的一些做法。在NIN中,主要通过串联卷积层与MLP层(级联在一起称为MLPConv(Multilayer Perceptron + Convolution))的方式增加了卷积层的表达能力。在一般的卷...原创 2019-06-29 12:01:46 · 1123 阅读 · 0 评论 -
TensofFlow学习记录:全局均值池化
全局均值池化就是在平均池化层中使用同等大小的过滤器将其特征保存下来。这种结构用来代替深层网络结构最后的全连接输出层。这个方法也是《Network In Network》论文中所论述的。以下为《Network In Network》论文中关于全局均值池化的翻译,原文请点击这里传统卷积神经网络在网络的较低层执行卷积。对于分类任务,最后一个卷积层得到的特征图被向量化然后送入全连接层,接一个softm...原创 2019-06-29 15:05:21 · 4931 阅读 · 0 评论 -
TensorFlow学习记录:读取已保存的.ckpt模型
之前写了一篇使用VGGNet对Cifar10数据集分类的博客,里面最后一句代码对已训练好的模型进行了保存,最近学习了如何读取已训练好的.ckpt模型,所以在这里记录一下。在使用VGGNet对Cifar10数据集分类中,代码的最后一行使用了tf.train.Saver类的save()函数将Tensorflow模型保存到了一个指定路径下,然后这个目录下就多出了四个文件,如下图所示:其中,chec...原创 2019-07-15 19:38:59 · 3426 阅读 · 0 评论 -
TensorFlow学习记录:计算图
前一段时间在学Keras,对深度学习算是有了点了解。最近在学Tensorflow,感觉有些重要的概念需要记录下来,方便日后复习查看。首先来看下什么是计算图Tensorflow 程序中的计算过程可以表示为一个计算图,其作用与外观都可以类比程序流程图来理解,在计算图上我们可以直观地看到数据的计算流程。计算图中每一个运算都可以视为一个节点(Node),每一个节点都可有任意个输入和输出。如果一个运...原创 2018-12-09 17:03:44 · 359 阅读 · 0 评论