
TensorFlow(一)模型InceptionResnetV1参数结构和参数值展示
[1] 【python】读取和输出到txt
[2] 如何从已存在的检查点文件(cpkt文友孝件)种解析出里面变量——无需重新创建原始计算图
[3] Tensorflow 模型文件结做告如构、模型中Tensor查看
[4] 查看TensorFlow checkpoint文件中的变量名和对应值
[5] 输出TensorFlow中checkpoint内变量的几种方纯启法
tensorflow的命名来源于本身的运行原理,tensor(张量)意味着N维数组,flow(流)意味着基于数据流图的计算,所以tensorflow字面理解为张量从流图的一端流动到另一端的计算过程。tensorflow中的所有数据如图片、语音等都是以张量这种数据结构的形式表示的。张量是一种组合类型的数据类型,表示为一个多维数组,通用的表示形式为 [T1,T2,T3,…Tn] ,其中 T 可以是在tensorflow中指定类型的单个数字,也可以是一个矩阵。
张量(tensor)的属性——维数(阶)、形状和数据类型。
张量的维数又叫张量的阶,是张量维数的一个数量描述。如下分别表示0维、1维、2维和3维的张量:
维度要看张量的最左边有多少个左中括号,有n个,盯槐则这个张量就是n维张量。
张量的形状以 [D0, D1, … Dn-1] 的形式表示,D0 到Dn 是任意的正整数。
如形状[3,4]表示第一维有3个元素,第二维有4个元素,[3,4]表示一个3行4列的矩阵。
在形状的中括号中有多少个数字,就代表这个张量是多少维的张量。
形状的第一个元素要看张量最外边的中括号中有几个元素(被最外边的中括号里边的内中括号括起来的所有数据算作一个元素)被逗号隔开,有n1个则这个张量就是n1维的,形状的第一个元素就是n1
形状的第二个元素要看张量中最左边的第二个中括号中有几个被逗号隔开的元素,有n2个则shape的第二个元素就是n2形状的第二个元素之后的第3,4…n个元素依次类推,分别看第n个中括号中有几个元素即可:
张量的数据类清迅型
张量的数据类型可以是以下数据类凯正友型中的任意一种:
1.可扩展参数: 从 kwargs 字典缓者亩里获取,可限制key的取值
vars : name scope 下的变量(字典扰森)
placeholders : 外部变量占位,一般是特征和标签(字典)
layers : 神经网络的 layer (列表)
activations : 每个 layer 的输出结果(列表)
inputs : 输入
output : 输出
loss : 损失
accuracy : 准确率
optimizer :优化器
opt_op :最优化的 op *** 作
_build 是私有 build 方法,在继承Model的具体实现时对 layers 进行 append *** 作,下面介绍 build 方法:
调用 _build ,所有变量设置共享空间( self.name )
构建模型序列:给输入,通过layer()返回输出,又将这个输出再次作为输入到下一个 layer() 中,循环这一过程;嫌轮最终,取最后一层 layer 的结果作为 output
保存 name scope下 的变量到 self.vars
模型效果度量: _loss 方法, _accuracy 方法
常用的结构化数据文件格式有csv、txt 、libsvm,本篇文章主要说明结构化数据(csv/txt)如何在TF框架进行高效、灵活的读取,避免一些不合理的方式,迈出算法开发标准化、工程化的第一步。
最常见的读取数据的方式是利用pandas包将csv、txt读取为DataFrame,一次全部放入内存。这是一种非常低效的方式,应该尽量避免这种读取方法。其他第三方封装python读取方式的包(TFLearn等)也不建议使用,推荐使用TF框架的OP *** 作进行数据读取。
高效的 TensorFlow 读取方式是将数据读取转换成 OP,通过 session run 的方式拉去数据。读取线程源源不断地将文件系统中的文件读入到一个内存的队列中,而负责计算的是另一个线程,计算需要数据时,直接从内存队列中取就可以了,这样就可以解决GPU因为IO而空闲的问题。同时,不会一次性的preload到内存,再大的数据量也不会超出内存的限制。
梯度下降 :梯度下降是一个在机器学习中用于寻找较佳结果(曲线的最小值)的迭代优化算法。梯度的含义是斜率或者斜坡的倾斜度。下降的含义是代价函数的下降。
算法是迭代的,意思是需要多次使用算法获取结果,以得到最优化结果。梯度下降的迭代性质能使欠拟合演变成获得对数据的较佳拟合。
梯度下降中有一个称为学习率的参量。如上图左所示,刚开始学习率较大,因此下降步长更大。随着点的下降,学习率变得越来越小,从而下降步长也变小。同时,代价函数也在减小,或者说代价在减小,有时候也称为损失函数或者损失,两者是一样的。(损失/代价的减小是一个概念)。
只有在数据很庞大的时候(在机器学习中,数据一般情况下都会很大),我们才需要使用epochs,batch size,iteration这些术语,在这种情况下,一次性将数据输入计算机是不可能的。因此,为了解决这个问题,我们需要把数据分成小块,一块一块的传递给计算机,在每一步的末端更新神经网络的权重,拟合给定的数据。
(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
(2)iteration:1个iteration等于使用batchsize个样本训练一次;
(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)