tensorflow案例:一步一个脚印
文章平均质量分 63
希望建立一个系列的笔记记录自己的tensorflow学习之路,并与他人分享。
yuanlulu
做过嵌入式Linux开发、深度学习平台开发。擅长c++和python。
展开
-
tf2.X中将模型保存为savedmodel
我小将一个计算欧式距离的小模型转换为savedmodel。原创 2022-11-14 20:19:52 · 628 阅读 · 0 评论 -
onnx模型输入输出维度修改
费了半天劲搭环境,解决onnx转换过程的各种问题,最后发现rknn-toolkit2-v1.3不支持onnx的hardswish算子,白干了。最后,在rknn-toolkit-v1.7环境下将ckpt固化为pb文件,拷贝到rknn-toolkit2-v1.3下,再转换为rknn成功。可以看到右侧inputs和outputs的信息,第一个维度都是无效的,所以我需要把他们固定为1,因为我本来也不需要批量推理。代码运行输出(unk__207和unk__208应该是引起上述保存的原因,改了它们就好了)原创 2022-10-27 20:01:41 · 4805 阅读 · 2 评论 -
tensorflow-ckpt转savemode记录
直接用tf2onnx转有问题,所以使用savemode作为中间格式,先将ckpt转为savemode,再将savemode转为onnx。搞个转换onnx的活,tf2.X的环境下怎么都不行,我后来安装了一个py36+tf1.15+tf2onnx的环境才走通全流程。解决方法在上面代码里,就是在add_meta_graph_and_variables第二个参数里指定“serve”为tag.我有一个tf1.X训练输出的ckpt格式的模型,需要转换为onnx格式。我在tf2.0里好用的代码,在tf2.2就出错了。原创 2022-10-27 19:43:24 · 1276 阅读 · 0 评论 -
tensorflow2.x:构建tf.keras.Model实例的几种方式
我看到教程里搭建模型主要就是实例化一个tf.keras.Model并对它进行各种设置,实例化一个tf.keras.Model对象竟然同时存在多种方式,这也不是“灵活”能解释的通的,感觉还是没有实现一种好用的方式达到“一招鲜”,多种方式并存的原因可能还是设计不够简单。如果是多输入输出的话,输入用[inoput1, input2]这样的方式来传入就可以,输出用[out1,out2]的方式来返回。Sequential只能搭建简单的网络,如果内部有复杂的结构,就需要直接使用tf.keras.Model构造。原创 2022-08-24 12:36:20 · 2258 阅读 · 0 评论 -
tensorflow 23:从ckpt文件导出固化PB文件
概述需要从ckpt文件生成固化的PB文件,给生成现场用。现在我探索下不依赖代码里的网络结构、仅仅用CKPT文件来生成PB文件。转化训练生成的ckpt文件目录如下:$ ls ./ckpt0507/checkpoint graph.pbtxt model.ckpt-3251.data-000...原创 2019-05-09 20:02:15 · 2947 阅读 · 3 评论 -
tensorflow 22:量化模型在pc环境调用
概述之前写过一文探讨tflite模型在pc环境下的调用:《tensorflow 21:用python转换tflite模型并在PC上调用》我就想,能不能只量化,格式还是普通的pb格式,然后在pc环境调用。这样既享受了量化压缩带来的好处,又不受制于tflite支持的算子不全面。结论没啥用!在pc环境用graph_transforms工具将incrption-v2模型量化,然后PC环境下调用...原创 2019-04-19 16:14:48 · 1336 阅读 · 0 评论 -
tensorflow 21:用python转换tflite模型并在PC上调用
概述想玩玩tflite,无奈对android开发环境不熟。经过搜索找到了在PC上python下调用tflite模型的方法。环境python3.6tf-nightly 1.13win10 64位i7 8550U制作frozen模型模型制作参考前面的一篇博客《tensorflow 20:搭网络、导出模型、运行模型》。主要就是两层卷积和两层全连接用来识别mnist数据集,保存为fro...原创 2019-01-04 00:11:06 · 27887 阅读 · 90 评论 -
tensorflow 20:搭网络、导出模型、运行模型
概述以前自己都利用别人搭好的工程,修改过来用,很少把模型搭建、导出模型、加载模型运行走一遍,搞了一遍才知道这个事情也不是那么简单的。搭建模型和导出模型参考《TensorFlow固化模型》,导出固化的模型有两种方式.方式1:导出pb图结构和ckpt文件,然后用 freeze_graph 工具冻结生成一个pb(包含结构和参数)在我的代码里测试了生成pb图结构和ckpt文件,但是没接着往下走,...原创 2018-12-12 19:59:04 · 4906 阅读 · 0 评论 -
tensorflow 19: tflite 概念理解
概述学术界对精度、自由度的要求和工业界对速度、精简度的要求形成了反差,这就使得越来越多的框架开始把training和inference分开,各公司都开始针对移动设备纷纷推出高性能inference库。tflitetflite其实就是谷歌自己的一个轻量级推理库。主要用于移动端。之前的tensorflow mobile那一套到2019年就不再维护了。tflite使用的思路主要是从预训练的模型转...原创 2018-11-14 11:24:53 · 20033 阅读 · 9 评论 -
tensorflow 18:cifar10图片分类训练(cpu或单gpu)
概述接着前面几篇博客讲cifar10的训练,本文牵涉的代码文件主要是cifar10_train.py。仔细看前面的cifar10.py就会发现,所有变量都被声明放在cpu上,如参考资料里的《卷积神经网络》所说,这是为了多个GPU上共享变量。只有train部分的节点没指定设备,如果有gpu的话训练还是默认在gpu上,其他部分都在cpu上。代码分解命令行选项参数FLAGS = tf.app....原创 2018-11-06 00:48:38 · 2259 阅读 · 0 评论 -
tensorflow 17:搭建图片分类计算图(cifar10.py)
概述书接上回,继续讲cifar10的例子,这次讲cifar10.py。代码在https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10cifar10.py速览这个文件主要包含以下几个部分:读取数据搭建前向预测计算图搭建loss搭建train下载cifar10数据集并解压这个文件的代码没有搭建...原创 2018-11-05 20:48:10 · 1072 阅读 · 0 评论 -
tensorflow 16:数据读取(以cifar10_input.py为例)
数据读取概述TensorFlow程序读取数据一共有3种方法:供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据。从文件读取数据: 在TensorFlow图的起始, 让一个输入管线从文件中读取数据。预加载数据: 在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况)。目前我用过的主要是第一种,就是提供fee...原创 2018-11-05 20:45:25 · 5681 阅读 · 3 评论 -
tensorflow 15:使用卷积和pool识别MNIST数据集
概述前面的博文讲到的是全连接识别MNIST。这篇博客主要讲解使用卷积和池化(POOL)来和别MNIST。牵涉的代码来自tensorflow的源码工程,目录是:tensorflow\examples\tutorials\mnist\minist_deep.py。源码中构建的计算图前向推断结构如下:graph LR输入数据-->卷积层1卷积层1-->POOL1POOL1--&...原创 2018-10-29 17:25:41 · 1373 阅读 · 0 评论 -
tensorflow 14:XLA编译器用于JIT加速
概述XLA(加速线性代数)是用于优化TensorFlow计算的线性代数的域特定编译器。XLA 利用 JIT 编译技术分析用户在运行时创建的 TensorFlow 图表,根据实际运行时维度和类型将其专门化,将多个运算融合在一起并为它们生成高效的本机代码——适用于 CPU、GPU 之类的设备和自定义加速器(例如,Google 的 TPU)。目前XLA是实验性的。大多数使用情况在性能(加快速度或减...原创 2018-10-11 21:07:29 · 4933 阅读 · 0 评论 -
tensorflow 13:tensorboard可视化
概述如前篇博文《tensorflow 12:双隐层+softmax回归实现mnist图片识别之二》所写,可以将训练的计算图和训练中的状态信息写入一个日志文件,采用tensorboard实时查看,也可以事后查看。权重(w和b)、度量(loss、accuracy)、超参和其它统计信息,都可以写入tensorboard的事件日志文件。一些常亮也可以写入。除了计算图结构,tensorboard汇总的...原创 2018-10-08 09:17:37 · 2948 阅读 · 0 评论 -
tensorflow 12:双隐层+softmax回归实现mnist图片识别之二
概述tensorflow的自带例程用两个文件演示了“全连接层+softmax回归”实现mnist图片识别的功能。一个文件是mnist.py,在之前一篇文章《tensorflow 11:双隐层+softmax回归实现mnist图片识别》已经介绍过了。不过mnist.py侧重搭建计算图,没有调用过程。本文讲解fully_connected_feed.py这个文件,主要讲解调用过程相关的知识点。f...原创 2018-10-07 00:44:23 · 2464 阅读 · 0 评论 -
tensorflow 11:双隐层+softmax回归实现mnist图片识别
概述上篇文章讲到的sofmax回归,除了输入层,只有线性层+sofmax,这两者合起来可以被称为输出层。没有中间的隐藏层。本文介绍在sofmax回归基础上增加两层隐藏层的方法。本文的主要参考来自参考资料里的《TensorFlow运作方式入门》和《TensorFlow实现双隐层SoftMax Regression分类器》。主要代码来自tensorflow源码目录下的例程mnist.py。借...原创 2018-10-06 17:18:54 · 3027 阅读 · 0 评论 -
tensorflow 10: sofmax回归识别mnist手写数字图片
Softmax回归介绍为了得到一张给定图片属于某个特定数字类的证据(evidence),我们对图片像素值进行加权求和。如果这个像素具有很强的证据说明这张图片不属于该类,那么相应的权值为负数,相反如果这个像素拥有有利的证据支持这张图片属于这个类,那么权值是正数。我们也需要加入一个额外的偏置量(bias),因为输入往往会带有一些无关的干扰量。下面的图片显示了一个模型学习到的图片上每个像素对于特定数...原创 2018-10-05 15:44:44 · 2318 阅读 · 0 评论 -
tensorflow 9. 参数解析和经典入口函数tf.app.run
概述本文总结两种参数解析的接口,一种是python的参数解析包自带的功能,使用时需要import argparse。另一类是tensorflow自带的功能,解析时import tensorflow就行了。python中的参数解析parse_known_args的例子tensorflow下的一个例子tensorflow/examples/tutorials/mnist/mnist_deep...原创 2018-10-07 00:51:03 · 2334 阅读 · 0 评论 -
tensorflow 8. MNIST的脚手架--input_data
在之前的案例中经常见到这样使用MNIST数据集的用法:from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("/tmp/data/", one_hot=False)这句话的作用是,如果”/tmp/data/”目录下存在mnist数据集,则加载,否则先下载后...原创 2018-04-03 22:22:24 · 2573 阅读 · 0 评论 -
tensorflow 7. 最近邻识别MNIST手写数据集
目前我已把我自己手工敲写加注释的代码放到自己的github账户上面,项目地址在这里:https://github.com/RootYuan/tensorflow_examples_practice/。最近邻算法,即找到训练样本中与之最近的数据,采用那个数据点的标注作为预测输出。实际上这里没有训练,选取样本本身就是训练。计算量主要在遍历所有点挨个计算距离。训练样本数量越多,越准确,但是计...原创 2018-04-01 15:13:42 · 605 阅读 · 0 评论 -
tensorflow 6. 动态计算图实现线性回归(eager execution)
本例程源码来自这里。目前我已把我自己手工敲写加注释的代码放到自己的github账户上面,项目地址在这里:https://github.com/RootYuan/tensorflow_examples_practice/。下面是正文分割线tensorflow一直以来是基于静态计算图的,这其实跟程序的执行过程并不一致,没办法使用python语言取控制中间流程。PyTorch 的动态图一...原创 2018-04-01 11:43:28 · 1773 阅读 · 0 评论 -
tensorflow 5. K均值回归用于手写数字识别
本代码展示的是tensorflow中K均值算法。 代码原始地址在这里下面这段摘自百度百科: K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。代码里面并没有把K的值直接设为10,而是设为25.然后把这25簇分为10类(对应10个数字)。相当于K均值之后用最近邻再次分类,思路...原创 2018-03-29 14:33:46 · 1399 阅读 · 0 评论 -
tensorflow 4. 逻辑回归-mnist和softmax的应用
这里有一个例子演示使用softmax算法对mnist数据集做逻辑回归训练。代码在这里 这里的例子与temsorflow tutorials下的例子有较大差异。官方的源码在这里主要差异在官方例子严格封装了四部曲:预测、损失、训练、评估。本文的例子也都有相应的步骤,但是没有将每一步封装成函数。所以推荐大家去看下tensorflow官网例子的代码风格。四部曲的一个讲解图片: 本次先来研究...原创 2018-03-21 23:23:03 · 962 阅读 · 0 评论 -
tensorflow 3. 线性回归和优化器
本节例子在这里本节例子主要计算Y=X*W + b公式里的W和b参数。优化器选用的是GradientDescentOptimizer。我手工敲了一遍,翻译了注释,如下:import tensorflow as tf import numpyimport matplotlib.pyplot as plt rng = numpy.random# 超参数learning_rate ...原创 2018-03-18 22:54:07 · 1438 阅读 · 0 评论 -
tensorflow 2. 变量和存钱
tensorflow变量的使用,feed和fetch的演示原创 2018-03-13 13:18:51 · 505 阅读 · 0 评论 -
tensorflow 1. 人生只若如hello
temsprflow的hello world入门例程和基本概念原创 2018-03-13 12:59:00 · 612 阅读 · 0 评论 -
tensorflow 0:开头及资源
希望建立一个系列的笔记记录自己的tensorflow学习之路,并与他人分享。tensorflow是谷歌开源的深度学习框架,作为工程开发人员,再tensorflow上既可以动手实现自己设计的深度学习框架,也非常易于重现论文中的成果。作为从其它软件开发方向转入到深度学习方向的人来说,tensorflow封装了很多常用模块和功能,使得我们易于学习和掌握。这里摘抄一段来自http://ww原创 2018-03-13 12:39:53 · 551 阅读 · 0 评论