
Tensorflow实战系列
Felaim
Hey, you're not a nobody. You're a somebody.
展开
-
深度学习:一文解决卷积,池化,反卷积的维度问题(包含一些工程思考)
一文解决卷积,池化,反卷积的维度问题1. 背景其实这个之前LZ对这个关注度不是很高,像tensorflow,选择‘valid’和‘same’也就可以了,但是对于caffe不可以。并且在海思芯片使用的caffe1.0,据前端同事说很多骚操作在前端都是不支持的,哭泣中,即使在重训的时候可以重新写C,来添加层,在NNIE推断结果还是不行。。。按理说华为内部应该是有一波大神来构建对应的代码来支持比较新的网络层的,这应该也算是一种技术壁垒吧,纯属猜测。还有量化误差的问题,这个真的也是无力吐槽,据说9月份就会出原创 2020-07-18 16:40:19 · 1309 阅读 · 0 评论 -
Tensorflow:Tanh和Sigmoid之间的关系(前端移植的一个坑)
1. 问题描述LZ在使用tensorflow训练好对应的模型,并转成caffemodel后,将模型交由前端同事的时候,前端同事转成wk文件后,发现推断结果与caffemodel结果相差很大,后来经过逐层排查后发现海思芯片的tanh与caffe或者tf中的实现有一定差异,会导致结果相差很大,于是LZ准备使用Sigmoid的进行替代,2. 解决方法但是因为网络物理含义的需求,需要经过激活函数后,feature map的值要在(-1, 1)之间,显然单纯Sigmoid是不满足这一要求的,于是,我们可以通过两原创 2020-06-15 14:13:02 · 1507 阅读 · 0 评论 -
Tensorflow:AssertionError: Bad argument number for Name: 3, expecting 4 (bug)
1. 问题描述LZ配置的tf环境,只要运行就会出现一堆类似上述的错误AssertionError: Bad argument number for Name: 3, expecting 4 (bug)WARNING: Entity <bound method Dense.call of <tensorflow.python.layers.core.Dense object at 0x7f4ab843b3c8>> could not be transformed and wil原创 2020-06-02 14:54:23 · 3116 阅读 · 0 评论 -
Docker: 使用tensorboard查看网络结构
Docker: 使用tensorboard查看网络结构LZ的笔记本又双叒叕重装了,实在是承受不起那么多的软件安装包了,所以把所有的环境全部部署到docker中了,那么在docker中怎么使用tensorboard呢,首先Docker要开启对应的映射端口,除了22端口外,再开启一个端口在使用tensorboard的时候,只需要指定开启的端口就可以了,本机的话比如说LZ开启的是5594端口ten...原创 2020-04-28 13:41:39 · 715 阅读 · 0 评论 -
Tensorflow: TensoeRT的安装及编译(c++接口)
1. 下载对应版本的TensorRT首先去NVIDIA官网下载对应版本的TensorRT,LZ这里使用的是6.0.1版本Could not find any NvInferVersion.h matching version '6' in any subdirectory:laim@felaim-pc:~/Documents/software/tensorflow-r1.14$ ./con...原创 2020-04-14 15:40:42 · 2522 阅读 · 2 评论 -
Tensorflow: load网络时出现 device='GPU' ...device='CPU...device= 'XLA_GPU'...等类型错误(import_meta_graph)
当你load tensorflow 的meta文件时 new_saver = tf.compat.v1.train.import_meta_graph('path to meta')出现如下的错误:Op: MatMulNode attrs: transpose_b=false, T=DT_INT32, transpose_a=falseRegistered kernels: ...原创 2020-03-28 15:06:18 · 3754 阅读 · 0 评论 -
Caffe: 为什么你的tf模型转caffemodel老不对?(其中一个重要原因)
使用训练好的tensorflow模型,转换成caffemodel的时候,需要对tensorflow中接口设置和caffe中接口设置都非常了解,才能对其参数进行对应设置,举个简单的例子:在我们使用slim库的时候,只需要按照如下方式进行书写:net = slim.conv2d(inputs, 16, 3, stride=1, padding='VALID', scope='Conv1')但是如...原创 2020-03-28 14:52:35 · 545 阅读 · 0 评论 -
Caffe: tensorflow的模型到底怎么转成caffemodel??(完整的流程+代码讲解)
tensorflow的模型到底怎么转成caffemodel?1. 简介一般情况下,LZ是使用tensorflow的,好像之前在学校只要python跑通,benchmark再刷高一点就行了。现在在公司,要把自己的模型进行移植,之前是后端的移植,最近前端也提了需求,前端一般都是用海思芯片,只支持caffe,所以为了先测试时间得把tf的模型转成caffemodel。程序猿总有不会的,总有要学习的不...原创 2020-03-28 14:05:10 · 1386 阅读 · 4 评论 -
Tensorflow: tf.add_to_collection()和tf.get_collection()的用法
在tensorflow的使用中,经常会看到tf.add_to_collection()和tf.get_collection()这两个函数成对的出现,那么这两个函数到底有什么用呢?用个小例子,解释一下import tensorflow as tf import numpy as np v1 = tf.get_variable(name='v1', shape=[1...原创 2020-03-11 13:38:20 · 1590 阅读 · 0 评论 -
Tensorflow: 怎么写L2 loss
最近真的写的都是非常基础的小点,也是希望自己能够好好积累。在训练中,我们通常会定义各种各样的loss,那么最简单的一个loss就是L2的distance,这个要怎么写呢?假设我们有两个feature,一个是我们predict出来的,我们假设为pred,另外一个是我们得到的ground_truth, 假设为gt,pred = np.random.randint(1, 5, [2, 5, 5, ...原创 2020-03-10 20:20:21 · 1334 阅读 · 0 评论 -
Tensoeflow:Tensorflow的padding到底是怎么一回事?(‘valid’和‘same’,附源码解释)
tensorflow的padding到底是怎么一回事?之前设计网络的时候,就大概算了一下feature map的输入输出的形状,padding呢一般就是两种,一种是‘valid’的方式,另外一种是‘same’方式,特别具体的怎么计算都记不太清了,结果转caffe model的时候发现,两种的padding方式是不同的,于是想在弄弄清楚tensorflow到底是怎么个padding方式,结果网上一...原创 2020-03-10 16:43:51 · 888 阅读 · 0 评论 -
Tensorflow: CUDA driver version is insufficient for CUDA runtime version(正确使用Anaconda安装tensorflow)
这个问题其实是LZ在使用公司服务器时,想要配置对应tf的环境,配置完成后运行代码出现的错误具体报错如下:Check failed: e == cudaSuccess || e == cudaErrorCudartUnloading CUDA: CUDA driver version is insufficient for CUDA runtime version服务器上的cuda版本太老了...原创 2020-03-03 15:38:01 · 733 阅读 · 0 评论 -
Tensorflow: 支持的数据类型和Tensor的一些接口(C++)
相信很多小伙伴对tensorflow的python接口使用都很熟悉了,前期,LZ已经将训练的模型通过tensorflow 的C++接口移植成功,现在出现的问题是tensorflow的session run只能从CPU上进行inference,并且inference后得到的结果也在CPU上,那么正常数据在CPU上,当然是没有问题的,重点是LZ获取的是GPU的buffer,如果使用cuda的接口进行m...原创 2020-01-19 13:53:09 · 1897 阅读 · 0 评论 -
Tensorflow:log设置方式(python和c++)
从源码编译tensorflow应该都知道,tensorflow的源码是c++写的,通过bazel编译,python接口的底层源码也是c++。所以LZ也研究了下tensorflow的LOG设置,在logging.h中头文件的定义如下所示:const int INFO = 0; // base_logging::INFO;const int WARNING = 1; ...原创 2019-12-25 16:42:17 · 1082 阅读 · 1 评论 -
Tensorflow: CUDA_ERROR_INVALID_HANDLE
这两天一直被下面的一个问题摧残:2019-11-27 00:59:20.503198: E tensorflow/stream_executor/stream.cc:331] Error recording event in stream: error recording CUDA event on stream 0x26abfb0: CUDA_ERROR_INVALID_HANDLE: in...原创 2019-11-27 18:56:16 · 2262 阅读 · 0 评论 -
Tensorflow:动态库的使用(头文件提取,Makefile链接动态库)
还是要把Tensorflow包含在自己的工程下面,所以主要的操作就是链接自己文件夹中的库文件,抽取Tensorflow需要的头文件,看了很多博客,都是一带而过,具体如何操作呢?新建一个头文件路径,mkdir inccd incmkdir tf_14将对应头文件复制到对应的tf_14文件夹下cp -r your_path to_tf/bazel-genfiles/* ./inc/tf_...原创 2019-10-28 19:02:04 · 1724 阅读 · 0 评论 -
tensorflow实战:由ckpt转成pb步骤的总结
最近真的项目很紧,996模式开启了多日,在完成项目一小步后,总算有时间进行一些梳理,也是对tensorflow有了更多的认识。之前在学校实验室中,其实并不涉及太多tensorflow c++端的接口,无论是训练还是做inference,基本上都是python,相对来说还是比较简单的,但是c++还是会比python多很多步骤,第一个遇到的问题其实就是,我怎么使用python训练好的ckpt模型呢?...原创 2019-10-12 14:12:23 · 1912 阅读 · 0 评论 -
TensorFlow实战15:TensorBoard的使用(tensorflow的可视化工具)
1.TensorBoard的简介 TensorBoard是TensorFlow官方推出的可视化工具,它可以将模型训练过程中的各种数据展示出来,包括标量(Scalars),图片(Images)、音频(Audio)、计算图(Graphs)、数据分布(Distributions)、直方图(Histograms)和嵌入向量(Embeddings)。简直功能强大到爆好嘛,这样我们在训练一个大型深度学习神经网原创 2017-04-28 10:34:24 · 1809 阅读 · 4 评论 -
Pointet的读后感(CVPR2016):2.点云输入的优劣
写文章肯定要motivation,既然说体素化方法,多视角的方法都有缺点,那么作者算是第一个使用点云作为输入的(≧▽≦)/啦啦啦那么问题来了,点云输入有什么好,又有什么不好(当然是使用其他方法的paper里说的)优点1.非常的简单,并且有非常统一的结构,避免组合的不规则性和复杂性.在通常情况下,作为点云的输入,是以(x, y, z)三个坐标作为输入,当然也有颜色信息和法线信息,现在就以最简单...原创 2018-12-11 14:43:23 · 1302 阅读 · 2 评论 -
Tensorflow 1.14.1 c++接口配置
因为项目上有要求,所以得配置一下tensorflow c++版本接口,因为LZ只要测试下算法inference的时间,所以对于接口可能还不是那么熟悉,但是还是摸索出来配置tensorflow接口的一套过程,当然其中参考博客也挺多的,可能不能全都写到参考链接里。第一步,确定你要安装的tensorflow的版本,这个很重要!很重要!很重要!因为不同版本对应的bazel和protocbuf的版本是不...原创 2019-09-02 19:20:01 · 4380 阅读 · 6 评论 -
Tensorflow实战7:实现AlexNet卷积神经网络及运算时间评测
之前已经介绍过了AlexNet的网络构建了,这次主要不是为了训练数据,而是为了对每个batch的前馈(Forward)和反馈(backward)的平均耗时进行计算。在设计网络的过程中,分类的结果很重要,但是运算速率也相当重要。尤其是在跟踪(Tracking) 的任务中,如果使用的网络太深,那么也会导致实时性不好。from datetime import datetimeimport mathi原创 2017-03-31 12:25:25 · 5338 阅读 · 3 评论 -
Pointet的读后感(CVPR2016):3.分类网络部分
先贴上pointnet原文当中的网络结构,后面再慢慢分析.可以看到图中有两个网络.一个是分类网络,另一个是语义分割网络.先说分类网络.可以看到分割网络只是在最后把全局信息重复了n次然后concat到nx64那层网络之后…呀,顺序有点问题,LZ连分类网络还没有解释呢?好了,从分类网络说起.我们可以看到输入是nx3,n代表的是输入点云的数量,一般取128/256/512/1024/2048/4...原创 2018-12-11 16:22:49 · 668 阅读 · 0 评论 -
Tensorflow: log等级设置
一不注意,tensorflow就会打印出来一堆的信息,这样LZ觉得有点难受…简单备注一下:LZ的记性不好╮(╯﹏╰)╭,还是记录下查阅起来很方便.在tensorflow的log日志等级如下:0:显示所有日志(默认等级)1:显示info、warning和error日志2:显示warning和error信息3:显示error日志信息所以具体的用法是…假设LZ只想看到error时的lo...原创 2018-12-15 16:41:14 · 1613 阅读 · 3 评论 -
TensorFlow实战12:实现基于LSTM的语言模型
1.LSTM的语言模型简介 LSTM(Long Short Term Memory),用来处理有时序联系的信息效果非常明显,在很多情况下,卷积神经网络虽然处理图片增加了其空间特征的联系,但是对于图片与图片之间的联系性并不是很强,所以对于视频或者是自然语言处理前后的关联性并不是很好。 对于一些简单的问题,可能只需要最后输入的少量时序信息即可解决问题。但对于复杂问题,可能需要更早的一些信息,甚至是时原创 2017-04-15 15:18:57 · 8314 阅读 · 19 评论 -
Tensorflow实战8:VGGNet实现及时间测评
1.VGGNet简介 嘿嘿嘿,小伙伴肯定有一个问题,VGGNet这个名字是怎么来的?是牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司研究员一起研发是深度卷积网络。上图显示的是VGGNet各级别的网络结构图,还有每个级别的参数量,从11层网络一直到19层的网络都有详尽的性能测试。虽然从A到E每一级网络逐渐变深,但是网络的参数量增加的并没有很多,原创 2017-04-05 18:40:08 · 3785 阅读 · 0 评论 -
TensorFlow实战11:实现Word2Vec
1.Word2Vec简介Word2Vec也称Word Embeddings,中文比较常见的叫法是“词向量”或者是“词嵌入”。通俗的来说就是把单词进行编码,变成数字的形式让计算机知道那个单词的代号。哈哈, 感觉就像以前的间谍通过莫尔斯电码进行信息传递,只不过那个是通过声音的长短进行编码,我们如果使用one-hot的编码方式,比如I是第一个单词,那么在维度为10的单词向量中,编码就是[1, 0, 0,原创 2017-04-13 18:15:16 · 6725 阅读 · 3 评论 -
tensorflow1.0 的一个bug(can't open CUDA library libcupti.so.8.0)
这是LZ在学习tensorBoard的时候遇到的一个问题,这个其实挺Bug,因为程序是可以正常运行到step90,然后就报下面一大段错误,看到核心已转储,简直崩溃。因为这个错误明显不是语法或者是人为的一些手误。后来查找了一下,是因为如果打开/usr/local/cuda/lib64,是找不到这个这个编译好的库文件的,文件在哪呢?在/usr/local/cuda/exteas/CUPTI/lib64中原创 2017-04-19 20:46:43 · 3487 阅读 · 0 评论 -
Tensorflow实战2:Softmax Regression识别手写数字
1.MNIST手写数字集 机器学习或者是深度学习的“hello world”,相信这个比方真的很亲切,因为首先这个数据集是手写数字的数据集,图片的像素为28*28的灰度图像,如果把28*28的点展成一个向量,那么就会是一个784维的向量。但同时也有一个问题,我们丢失了其空间信息,但是手写数字任务比较简单,所以空间信息是丢弃对这个任务处理影响并不是很大。 这个数据集训练集有5500原创 2017-03-27 14:02:45 · 1738 阅读 · 4 评论 -
Tensorflow实战5:实现简单的卷积神经网络
1.卷积神经网络简介 卷积神经网络(convolutional neural network, CNN),最早是19世纪60年代,生物学家对猫视觉皮层研究发现:每个视觉神经元只会处理一小块区域是视觉图像,即感受野。后来到了80年代,日本科学家提出了神经认知机(Neocognitron)的概念,也可以算作是卷积神经网络最初的实现原型,在CS231n的课上说过,卷积神经网络不是一夜产生的,从这个发展过原创 2017-03-30 15:20:58 · 9815 阅读 · 9 评论 -
tensirflow实战6:进阶的卷积神经网络训练CIFAR-10数据集
1.CIFAR-10数据集介绍 本节使用的是比较经典的数据集叫CIFAR-10,包含60000张32*32的彩色图像(总算不像MNIST,是灰度图了,灰度图是单通道),因为是彩色图像,所以这个数据集是三通道的,分别是R,G,B三个通道。CIFAR-10,一共有10类图片,每一类图片有6000张,有飞机,鸟,猫,狗等,而且其中没有任何重叠的情况(现实社会中肯定不止那么多类啦)。现在还有一个兄弟版本,原创 2017-03-30 19:31:36 · 6260 阅读 · 4 评论 -
Tensorflow实战4:多层感知机
1.多层感知机简介 多层感知机(Multi-Layer Perceptron, MLP),又叫做多层神经网络。如果使用的是没有隐含层的神经网络,那么这样的神经网络只能解决一些线性可分的问题,但是在实际的生活中,很多问题并不是线性可分的,例如XOR函数问题,在这个特征空间中,这就是一个线性不可分问题,我们可以使用曲线来划分这两类样本。在通常情况下,神经网络的隐含层越多,就可以对原有的特征进行越抽象的原创 2017-03-30 20:14:01 · 1697 阅读 · 0 评论 -
Tensorflow实战1:利用AlexNet训练MNIST
本文主要有以下几个内容: 1.AlexNet模型介绍 在2012 ILSVRC竞赛(Large Scale Visual Recognition Challenge)中,AlexNet模型赢得了第一名,Top-5错误率为15.3%,比上一年冠军下降了10个百分点。从此,AlexNet成为CNN领域内具有重要历史意义的一个网络模型。LZ之前在博客中已经讲了怎么安装最新的tensorflow框架,以原创 2017-03-24 16:29:15 · 11159 阅读 · 23 评论 -
Tensorflow实战9:Googel Inception net实现即时间测评
1.Google Inception Net简介Google Inception Net首次出现在ILSVRC 2014的比赛中(和VGGNet同年),就以较大优势取得了第一名,在比赛中使用的Inception V1通常被称作为Inception V1,虽然这个网络结构有22层,但是只有500万个参数量,是之前我们讲过的AlexNet参数量的1/12。为什么要降低参数量呢?第一点,参数量越大需要的数原创 2017-04-06 18:48:54 · 3274 阅读 · 2 评论 -
TensorFlow实战12:Bidirectional LSTM Classifier
1.双向递归神经网络简介双向递归神经网络(Bidirectional Recurrent Neural Networks, Bi-RNN),是由Schuster和Paliwal于1997年首次提出的,和LSTM是在同一年被提出的。Bi-RNN的主要目标是增加RNN可利用的信息。RNN无法利用某个历史输入的未来信息,Bi-RNN则正好相反,它可以同时使用时序数据中某个输入的历史及未来数据。 Bi-R原创 2017-04-20 19:48:32 · 12718 阅读 · 3 评论 -
Tensorflow:TypeError: pred must not be a Python bool
这个问题常见且不小心就会遇到,记录下O(∩_∩)O哈!frr@frr:~/Documents/code/pointnet/models$ python pointnet_SE.py('input_image', <tf.Tensor 'ExpandDims:0' shape=(32, 1024, 3, 1) dtype=float32>)Traceback (most recen...原创 2018-11-15 09:49:11 · 5345 阅读 · 1 评论 -
Tensorflow: CUDA_ERROR_OUT_OF_MEMORY
最近LZ一直在使用tensorflow,遇到有些小问题,就遇到一个,解决一个,有些一直重复出现,或者是做个笔记,加快小伙伴的使用.在写测试程序代码的时候出现如下报错,源代码就不贴出来了…2018-11-07 17:10:30.875135: E tensorflow/stream_executor/cuda/cuda_driver.cc:924] failed to allocate 62.2...原创 2018-11-08 10:58:53 · 7663 阅读 · 2 评论 -
Tensorflow:Attempting to use uninitialized value
其实tensorflow的用法相对来说还是很固定的,出现对应的问题应该很快就能找到对应问题所在下面是经常不注意就会遇到的一个错误:tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value centers从字面上就是说LZ尝试使用未初始化的值,那...原创 2018-11-09 13:58:41 · 2176 阅读 · 1 评论 -
Tensorflow:输出tensor具体值
在一些任务中,经常需要看tensor的具体值是多少,举个例子,你得查看一部分的feature map,或者是一些数据是否符合训练的预期,那么怎么查看对应tensor的具体值(⊙o⊙)?有些小伙伴可能会特别不屑,print一下不就好了?哈哈,要是直接print有效, LZ还花这闲工夫干啥!举个例子,不难.我们先生成一些随机数import numpy as npnp.random.seed(...原创 2018-11-06 16:52:58 · 17825 阅读 · 2 评论 -
tensorflow版本和地址查询
最近要找工作啦,整理下基础^_^python import tensorflow as tftf.__version__'1.2.0-rc1'//这是输出tf_.__path__['/usr/local/lib/python2.7/dist-packages/tensorflow']//地址输出OK~(≧▽≦)/~啦啦啦...原创 2018-07-17 10:10:33 · 581 阅读 · 0 评论 -
TensorFlow实战10:ResNet实现及时间测评
1.ResNet简介ResNet(Residual Neural Network)是由微软研究院的Kaiming He等4名华人提出的,一般我们把ResNet称作是残差网。在ILSVRC 2015的比赛中,Kaiming He等人通过使用Residual Units(残差单元)训练了152层神经网络(名副其实的深度学习了!)赢得了冠军。在比赛中的top-5的错误率为3.57%,同时参数量比VGGNe原创 2017-04-08 20:08:33 · 15693 阅读 · 8 评论