tensorflow调研
BYR_jiandong
这个作者很懒,什么都没留下…
展开
-
tensorflow将训练好的模型freeze,即将权重固化到图里面,并使用该模型进行预测
ML主要分为训练和预测两个阶段,此教程就是将训练好的模型freeze并保存下来.freeze的含义就是将该模型的图结构和该模型的权重固化到一起了.也即加载freeze的模型之后,立刻能够使用了。下面使用一个简单的demo来详细解释该过程,一、首先运行脚本tiny_model.py#-*- coding:utf-8 -*-import tensorflow as tfimport n原创 2016-11-28 21:54:47 · 56365 阅读 · 34 评论 -
CNN的超参数 & 宽卷积和窄卷积的理解及tensorflow中的实现
窄卷积 vs 宽卷积在上文中解释卷积运算的时候,我忽略了如何使用滤波器的一个小细节。在矩阵的中部使用3x3的滤波器没有问题,在矩阵的边缘该怎么办呢?左上角的元素没有顶部和左侧相邻的元素,该如何滤波呢?解决的办法是采用补零法(zero-padding)。所有落在矩阵范围之外的元素值都默认为0。这样就可以对输入矩阵的每一个元素做滤波了,输出一个同样大小或是更大的矩阵。补零法又被称为是宽卷积,不原创 2017-01-01 10:17:15 · 10770 阅读 · 0 评论 -
keras 对于大数据的训练,无法一次性载入内存,使用迭代器
说明:我是在keras的官方demo上进行修改https://github.com/fchollet/keras/blob/master/examples/imdb_cnn.py1、几点说明,从文件中读入数据,会降低GPU的使用率,如果能够直接将数据载入内存,GPU的使用率会比较高。下面进行对比:全部数据载入内存,GPU的使用率:使用队列,边读数据边进行训练:结论:原创 2017-02-05 01:05:49 · 39480 阅读 · 14 评论 -
tensorflow载入数据的三种方式
Tensorflow数据读取有三种方式:Preloaded data: 预加载数据Feeding: Python产生数据,再把数据喂给后端。Reading from file: 从文件中直接读取这三种有读取方式有什么区别呢? 我们首先要知道TensorFlow(TF)是怎么样工作的。TF的核心是用C++写的,这样的好处是运行快,缺点是调用不灵活。而Python恰好相反,所以原创 2016-11-28 14:50:42 · 34771 阅读 · 7 评论 -
tensorflow CNN for mnist
code:# -*- coding: utf-8 -*-"""Created on Sat Dec 17 20:15:46 2016@author: Administrator"""import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_datamnist = input_dat原创 2016-12-18 19:03:15 · 906 阅读 · 1 评论 -
tensorflow conv2d的padding解释以及参数解释
1、padding的方式:说明:1、摘录自http://stackoverflow.com/questions/37674306/what-is-the-difference-between-same-and-valid-padding-in-tf-nn-max-pool-of-t2、不同的padding方式,VALID是采用丢弃的方式,比如上述的input_width=13,原创 2016-12-18 16:16:55 · 40615 阅读 · 3 评论 -
tensorflow MNIST数据集上简单的MLP网络
一、codeimport tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets('MNIST_data',one_hot=True)sess = tf.InteractiveSession()x = tf.placehol原创 2016-12-17 21:12:12 · 2085 阅读 · 0 评论 -
tensorflow的设计理念
1、tensorflow的设计理念可以认为是定义与运行分开.具体而言,就是定义图和运行图完全分开的过程.就比如说,下面定义a = tf.add(2,2)其实就是定义了一个操作,只是在图上增加了一个加法操作,并没有真正去执行加法操作.import tensorflow as tf# Usual way to do math operation in a programa = 2 + 2p原创 2016-11-28 15:55:57 · 1319 阅读 · 0 评论 -
tensorflow读取数据到队列当中
TensorFlow是一种符号编程框架(与theano类似),先构建数据流图再输入数据进行模型训练。Tensorflow支持很多种样例输入的方式。最容易的是使用placeholder,但这需要手动传递numpy.array类型的数据。第二种方法就是使用二进制文件和输入队列的组合形式。这种方式不仅节省了代码量,避免了进行data augmentation和读文件操作,可以处理不同类型的数据, 而原创 2016-11-28 13:19:45 · 7089 阅读 · 3 评论 -
keras查看网络结构,复现别人网络结构的时候要保持尺寸的一致,用可视化的图会比较便利
场景:在复现别人网络结构的时候,要保持网络结构的一致。每层输入的尺寸和输出的尺寸要一致。在排查复现的结构是否准确,可以通过可视化的办法。将定义好的网络结构的图可视化出来。 keras可以很方便将网络结构可视化出来。 from keras.utils.visualize_util import plotplot(model, to_file='model.png',sh原创 2017-02-07 23:04:35 · 3529 阅读 · 1 评论 -
keras卷积补零相关的border_mode的选择以及padding的操作
1、keras卷积操作中border_mode的实现def conv_output_length(input_length, filter_size, border_mode, stride): if input_length is None: return None assert border_mode in {'same', 'valid'} if原创 2017-02-08 00:00:09 · 26651 阅读 · 6 评论 -
keras2 predict和fit_generator的坑
1、使用predict时,必须设置batch_size,否则效率奇低。 查看keras文档中,predict函数原型: predict(self, x, batch_size=32, verbose=0)说明:只使用batch_size=32,也就是说每次将batch_size=32的数据通过PCI总线传到GPU,然后进行预测。在一些问题中,batch_si原创 2017-06-21 22:29:57 · 38140 阅读 · 12 评论 -
tensorflow中对于模型的参数都必须声明为变量
1、tensorflow中所有的定义都只是声明,只有在session中run的时候,才会被执行。谨记:对于模型中所有的参数都必须要使用variable来定义。可以使用tf.truncated_normal()来定义随机初始话,但是必须将随机初始化的值赋给variable。不然,每次需要访问参数的时候,都会驱动tf.truncated_normal()。正确的写法:import nump原创 2017-06-30 14:53:43 · 2635 阅读 · 0 评论 -
keras 指定程序在某块卡上训练
场景:某台机器上有三块卡,想同时开三个程序,放到三块卡上去训练。策略:CUDA_VISIBLE_DEVICES=1 python train.py就可以指定程序在某块卡上训练。原创 2017-03-06 18:41:59 · 1399 阅读 · 0 评论 -
keras 实现CNN 进行手写字符识别
转载的博客:http://machinelearningmastery.com/handwritten-digit-recognition-using-convolutional-neural-networks-python-keras/1、显示设置输入张量的维度from keras import backend as KK.set_image_dim_ordering('th')2原创 2017-02-03 16:54:21 · 6148 阅读 · 0 评论 -
使用keras实现简单的前向全连接神经网络
转载的原博客地址如下:http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/下面是对该博客的几个关键点的记录:1、可以设置随机数种子的时候,建议设置随机数种子,方便结果的复现.from keras.models import Sequentialfrom keras.layer原创 2017-02-03 15:23:07 · 11962 阅读 · 0 评论 -
keras 保存模型和加载模型
import numpy as npnp.random.seed(1337) # for reproducibilityfrom keras.models import Sequentialfrom keras.layers import Densefrom keras.models import load_model# create some dataX = np.linspa原创 2017-02-19 18:39:14 · 45714 阅读 · 6 评论 -
keras Lambda自定义层实现数据的切片,Lambda传参数
1、代码如下:import numpy as npfrom keras.models import Sequentialfrom keras.layers import Dense, Activation,Reshapefrom keras.layers import mergefrom keras.utils.visualize_util import plotfrom keras原创 2017-02-09 01:21:14 · 28953 阅读 · 5 评论 -
Tensorflow实现MultiInput & Merge操作
1、Keras的Sequential模型的理解: Sequential可以理解为容器,将网络中的各个层都通过Add操作,添加到里面。2、Tensorflow的MultiInput操作和Merge操作from keras.models import Sequentialfrom keras.layers import Dense, Activationfrom keras.l原创 2017-02-08 16:31:24 · 4259 阅读 · 0 评论 -
tensorflow 程序挂起的原因,即整个进程不报错又不执行的原因
一、说明:在使用tensorflow的过程中,出现过程序不报错又不接下去执行的错误,后来分析了原因是tf的数据线程没有启动,导致数据流图没办法计算,整个程序就卡在哪里。更深层次的原因是tensorflow的计算和数据读入是异步的,合理的方式是主线程进行模型的训练,然后开一个数据读入线程异步读入数据.tensorflow会在内存中维护一个队列,然后数据线程异步从磁盘中将样本推入队列当中。并且,因原创 2016-11-28 09:42:53 · 26526 阅读 · 18 评论 -
tensorflow中关于队列使用的实验
Queue:队列本身也是图中的一个节点。其他节点(enqueue, dequeue)可以修改队列节点中的内容。#-*- coding:utf-8 -*-import tensorflow as tf#创建的图:一个先入先出队列,以及初始化,出队,+1,入队操作q = tf.FIFOQueue(3, "float")init = q.enqueue_many(([0.1, 0.原创 2016-11-28 00:36:25 · 15432 阅读 · 6 评论 -
tensorflow中可视化工具tensorboard的使用
from __future__ import print_functionimport tensorflow as tfdef add_layer(inputs, in_size, out_size, activation_function=None): # add one more layer and return the output of this layer wit原创 2016-11-18 19:41:48 · 1068 阅读 · 0 评论 -
tensorflow for 分类问题
from __future__ import print_functionimport tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data# number 1 to 10 datamnist = input_data.read_data_sets('MNIST_data', one_hot=T原创 2016-11-18 19:06:11 · 773 阅读 · 0 评论 -
tensorflow构建网络模型
from __future__ import print_functionimport tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltdef add_layer(inputs, in_size, out_size, activation_function=None): Weights = tf.V原创 2016-11-18 15:34:30 · 950 阅读 · 0 评论 -
tensorflow8 placeholder
import tensorflow as tfinput1 = tf.placeholder(tf.float32) #typeinput2 = tf.placeholder(tf.float32) #typeoutput = tf.mul(input1,input2)with tf.Session() as sess: print (sess.run(output,原创 2016-11-18 09:45:55 · 856 阅读 · 0 评论 -
tensorflow7 Variable变量
import tensorflow as tfstate = tf.Variable(0,name='counter')#print (state.name)one = tf.constant(1)new_value = tf.add(state,one)update = tf.assign(state,new_value)#very importantinit = tf.原创 2016-11-18 09:35:57 · 670 阅读 · 0 评论 -
tensorflow6 会话控制 session
import tensorflow as tfimport numpy as npmatrix1 = tf.constant([[3,3]])matrix2 = tf.constant([[2], [2]])product = tf.matmul(matrix1,matrix2) # matrix multiply#method1#s原创 2016-11-18 09:26:06 · 4264 阅读 · 0 评论 -
tensorflow5 简单神经网络的构建
import tensorflow as tfimport numpy as np#create datax_data = np.random.rand(100).astype(np.float32)y_data = x_data*0.1 + 0.3###create tensorflow struture start###Weight = tf.Variable(tf.rando原创 2016-11-17 22:47:51 · 1568 阅读 · 1 评论 -
LSTM的完整推导过程,附上推导的手写稿
1、LSTM结构分析:说明:LSTM只是RNN的一种,只是将sigmoid神经元替换成LSTM单元。整体上的结构和前向全连接神经网络类似,也会有输入层结点,输出层结点。上图的结构就是有4个输入层结点,2个single-cell LSTM memory blocks,5个输出层结点。2、符号说明:3、前向过程:说明:前向传播过程,可以看出,对于原创 2016-11-16 16:47:04 · 4104 阅读 · 0 评论 -
tensorflow中可视化loss,weight,bias,提供算法调试的信息
from __future__ import print_functionimport tensorflow as tfimport numpy as npdef add_layer(inputs, in_size, out_size, n_layer, activation_function=None): # add one more layer and return the原创 2016-11-18 20:20:31 · 8403 阅读 · 0 评论 -
tensorflow中dropout的用法,防止overfitting
1、不使用dropout的方案:from __future__ import print_functionimport tensorflow as tffrom sklearn.datasets import load_digitsfrom sklearn.cross_validation import train_test_splitfrom sklearn.preprocessin原创 2016-11-18 21:34:39 · 45844 阅读 · 2 评论 -
tensorflow tenosr的操作 concat 和 reshape
1、concat的操作是将矩阵逐行拼起来,或者逐列拼起来:import tensorflow as tft1 = [[1,2,3], [4,5,6]]t2 = [[7,8,9], [10,11,12]]sess = tf.Session()print (sess.run(tf.concat(1, [t1, t2])))结果:concat(1,[t1,t2])进行逐行拼凑,在LSTM中原创 2016-12-09 09:22:21 · 3315 阅读 · 0 评论 -
session.run()是非常耗时的,千万不要用session.run的方式去取数据
1、修改某一程序的时候,使用了session去取数据,导致时间效率非常低。后来,对session.run()进行了测试,发现使用session读取数据的效率是非常低下的.# -*- coding: utf-8 -*-import tensorflow as tfimport timet1 = time.time()x = tf.Variable([1.0])b =1.0start原创 2016-12-06 15:38:34 · 20806 阅读 · 9 评论 -
tensorflow 保存和加载模型 -2
1、我们经常在训练完一个模型之后希望保存训练的结果,这些结果指的是模型的参数,以便下次迭代的训练或者用作测试。Tensorflow针对这一需求提供了Saver类。Saver类提供了向checkpoints文件保存和从checkpoints文件中恢复变量的相关方法。Checkpoints文件是一个二进制文件,它把变量名映射到对应的tensor值。只要提供一个计数器,当计数器触发时原创 2016-11-23 10:57:28 · 23627 阅读 · 5 评论 -
tensorflow保存 和 加载模型
1、import tensorflow as tfimport numpy as np# save to fileW = tf.Variable([[1,2,3],[4,5,6]],dtype = tf.float32,name='weight')b = tf.Variable([[1,2,3]],dtype = tf.float32,name='biases')init = t原创 2016-11-22 22:12:47 · 3718 阅读 · 0 评论 -
错误Tensor is not an element of this graph tensorflow
1、说明:tensorflow使用图来定义计算,在session中来执行图中定义的计算,如果没有显式的说明,那么session就跟默认的图相关联.graph 和 session应该是一一对应的.下面,举例说明,session如果和graph不一一对应的话,会出现errorimport tensorflow as tfdef activation(e, f, g): return e原创 2016-12-03 22:14:05 · 12681 阅读 · 1 评论 -
tensorflow中的tf.app.run()
1、tensorflow的程序中,在main函数下,都是使用tf.app.run()来启动if __name__ == "__main__": tf.app.run()2、查看源码可知,该函数是用来处理flag解析,然后执行main函数,那么flag解析是什么意思呢?诸如这样的:"""Generic entry point script."""from __future__ i原创 2016-11-21 19:13:45 · 17951 阅读 · 1 评论 -
tensorflow中使用LSTM去预测sinx函数
import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltBATCH_START = 0TIME_STEPS = 20BATCH_SIZE = 50INPUT_SIZE = 1OUTPUT_SIZE = 1CELL_SIZE = 10LR = 0.006def get_batch():原创 2016-11-20 22:01:20 · 4526 阅读 · 1 评论 -
tesnsorflow 使用LSTM进行分类的例程
import tensorflow as tfimport sysfrom tensorflow.examples.tutorials.mnist import input_data# this is datamnist = input_data.read_data_sets('MNIST_data', one_hot=True)# hyperparameterslr = 0.00原创 2016-11-20 14:58:52 · 10252 阅读 · 5 评论 -
keras 设置学习率的办法
错误的方法:model.optimizer.lr.assign(0.01)model(X,y,nb_epoch=50)正确的方法:import keras.backend as KK.set_value(sgd.lr, 0.5 * K.get_value(sgd.lr))原创 2017-08-03 10:37:46 · 28142 阅读 · 2 评论