Tensorflow的名字中包含两个概念-tensor和flow。Tensor是张量的意思,在tensorflow中可以被简单的理解为数组。Flow就是张量之间通过计算相互转化的过程。分别介绍tensorflow的计算模型、数据模型和运行模型。
1.计算模型
Tensorflow是一个通过计算图的形式啦表述计算的编程系统,Tensorflow将所有的计算转化为计算图,图中的每一个计算都是计算图的一个节点,并且不同计算图上的张量和运算都不会共享。
函数:
tf.get_default_graph函数可以获取当前默认的计算图。
tf.Graph函数用来生成新的计算图。
tf.Graph.device函数来指定运行计算的设备。
2.数据模型
张量可以被简单理解为多位数组。在tensorflow中,张量并非保存数字,而是保存的是如何得到这些数字的运算过程。一个张量中主要包含三个属性:名字、维度、类型。如下图所示。
add:0,表示result这个变量是节点“add”输出的第一个结果,编号从0开始。shape表示的是张量的维度。dtype表示属性的类型。
3.运行模型
Tensorflow中的session来执行定义好的运算。session拥有并管理Tensorflow程序运行时的所有资源。session也有先定义后使用的规则,但是在程序的结尾处要close了。
使用方法:
sess = tf.Session() #创建一个会话
sess.run() #将进行会话的运算
sess.close(0 #关闭会话
如果不想使用close也可以使用with函数。如:
with tf.Session() as sess:
sess.run()
tf.Tensor.eval函数来计算一个张量的取值。
tf.InteractiveSession函数会自动将生成的会话注册为默认会话。
Tensorflow常用函数:
tf.Variable() #创建一个变量
tf.matmul() #实现矩阵相乘
常见随机数生成函数:
(1)tf.random_normal() #正太随机函数,主要参数为平均值、标准差、取值类型
例:tf.random_normal([2,3],stddev=2),2*3矩阵,标准差为2
(2)tf.truncated_normal() #正太分布随机函数,如果随机出来的值偏离平均值超过2个标准差,那么这个数将会被重新随机
(3)tf.random_uniform() #平均分布,主要参数为最小、最大取值,取值类型
(4)tf.random_gamma() #Gamma分布,主要参数为形状参数alpha、尺度参数beta、取值类型
常见常熟生成函数:
(1)tf.zeros() #生成全0的数组
例:tf.zeros([2,3],int32)
(2)tf.ones() #生成全1的数组
例:tf.ones([2,3],int32)
(3)tf.fill()产生一个全部为给定数字的数组
例:tf.fill([2,3],2)
(4)tf.constant() #产生一个给点值得常量
例:tf.constant([2,3])
tf.initialize_all_variables() #初始化所有的变量,tensorflow中定义时初始化变量是个伪初始化变量,需要进行改函数的初始化才能生效。
卷积神经网络:
tf.nn.max_pool(value,ksize,stridies,padding,name=None) #value一边是feature map,形式是一个四维变量为[batch,height,width,channels],ksize表示池化窗口的大小,是一个四维变量[1,height,width,1],strdies是步长,[1,stride,stride,1],padding取‘VALID’或者‘SAME’。
tf.nn.lrn(input,depth_radius=None,bias=None,alpha=None,beta=None) #是一个数据增强作为relu激励之后防止数据过拟合而提出的一种处理方法,局部相应标准化。基本上会被DROPOUT方法所替代。
tf.nn.bias_add(value,bias,name=None) #将偏差项bias加入到value上去
tf.image.decode_jpeg(image_contents,channels=3) #对jpeg格式的图像进行解码,解码之后的结果为一个tensor,channels为颜色通道个数
tf.train.slice_input_producer() #是一个tensor生成器,作用是按照设定,每次从一个tensor列表中按顺序或者随机抽取出一个tensor放入文件名队列。
tf.train.batch() #是一个tensor队列生成器,作用是按照给定的tensor顺序,吧batch_size个tensor推送到文件队列,作为训练一个batch的数据,等待tensor出对执行计算。
tf.nn.dropout() #为了防止或减轻过拟合而使用的函数,一般在全连接层。
tf.train.AdamOptimizer(learning_rate) #次函数是Adam优化算法,选择全局最优点的优化算法,引入了二次方梯度校正,并基于learning_rate进行梯度优化训练
tf.train.GradientDescentOptimizer(learning_rate) #此函数是利用梯度下降方进行优化操作,并基于learning_rate进行梯度优化训练
tf.summary.merge_all() #可以将所有的summary全部保存到磁盘,以便tensorboard显示
tf.summery.scalar() #添加标量统计结果
tf.nn.in_top_k(prediction,target,k) #模型预测的结果和实际结果是否相等,k表示每个样本的预测结果的前K个最大的数是否在target里,一般取1
tf.nn.relu() #激活函数
tf.nn.lrn(0 #归一化函数
tf.argmax(vector, 1) #返回的是vector中的最大值的索引号,如果vector是一个向量,那就返回一个值,如果是一个矩阵,那就返回一个向量,这个向量的每一个维度都是相对应矩阵行的最大值元素的索引号。
Tensorflow的API地址为:https://www.tensorflow.org/api_docs/python/
参考文献:
Tensorflow:实战Google深度学习框架
ValueError: Rank mismatch: Rank of labels (received 2) should equal rank of logits minus 1 (received 2).http://maaiguo.com/