tensorflow的一些基本函数

来源:互联网 发布:签到软件虚拟定位 编辑:程序博客网 时间:2024/05/23 07:24
tf中流动的叫做张量(tensor),张量在数据流图中从前往后流动一遍就完成了一次前向传播。残差从后往前流动一遍就完成了一次反向传播。 


tf.truncated_normal(shape, mean, stddev, dtype, seed, name).这是一个截断的产生正太分布的函数,产生的值如果与均值的差值大于两倍的标准差,那就重新生成。


tf图中还有一种特殊的数据,叫变量。(Variable)它在图中有固定的位置,不能随意流动。创建一个变量张量:tf.Variable()
创建一个常量张量:tf.constant()


卷积函数
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)
padding有两个取值,“SAME”,"VALID"。“SAME”加入了补充层。第五个是是否使用cudnn加速,默认为true。


池化函数
tf.nn.max_pool(value, ksize, strides, padding, name=None)
四个参数。第一个输入一般是feature map。
第二个参数一般是四维向量,因为我们不想在batch,和channels上做变化,所以两个维度设为1,[1, height, width, 1]。返回一个tensor。


tf.placeholder与tf.Variable.
tf.Variable:主要在于一些可训练变量(trainable variables),比如模型的权重(weights,W)或者偏置值(bias);声明时,必须提供初始值;名称的真实含义,在于变量,也即在真实训练时,其值是会改变的,自然事先需要指定初始值;
tf.placeholder(dtype,shape=None,name=None):用于得到传递进来的真实的训练样本。比如,images,labels.不必指定初始值,可在运行时通过feed_dict参数指定。这也是其命名的原因所在,仅仅作为一种占位符。shape:数据形状。默认是None,就是一维值,也可以是多维,比如[2,3],[None,3]表示列是3,行不定
tf.transpose() 类似于转置函数,将各维度变化一下。
tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None, name=None)x是输入的tensor,keep_prob是每个元素保留下来的概率。


tf.redeuce_max, tf.reduce_mean, tf.reduce_sum(input, reducion_indices=None, keep_dims=False, name=None).这三个函数都是用来求tensor在某一维度上求值的函数。如果不指定第二个参数,那么就在所有的元素中做。
x=[[1, 1, 1],
   [1, 1, 1]]
tf.reduce_sum(x) => 6
tf.reduce_sum(x, 0) => [2, 2, 2]
tf.reduce_sum(x, [0, 1]) => 6


对应In[19]cross_entropy = -tf.reduce_sum(y_*tf.log(y)).其中y_表示的是正确值。交叉熵。
tf.equal(a, b) 比较这两个矩阵或向量对应的元素,如果是相等的就返回True,否则返回False.
tf.argmax(input, axis=None).返回最大值的下标。当axis=0时,按行,axis=1时按列。
```
test = np.array([[1, 2, 3], 
                 [2, 3, 4], 
                 [5, 4, 3], 
                 [8, 7, 2]])
np.argmax(test, 0)   #输出:array([3, 3, 1]
np.argmax(test, 1)   #输出:array([2, 2, 0, 0]
```
tf.cast(x, dtype, name=None)将x的数据格式转化成dtype。
tf.InteractiveSession()和tf.Session()。tf.InteractiveSession():它能让你在运行图的时候,插入一些计算图,这些计算图是由某些操作(operations)构成的。这对于工作在交互式环境中的人们来说非常便利,比如使用IPython。
tf.Session():需要在启动session之前构建整个计算图,然后启动该计算图。意思就是在我们使用tf.InteractiveSession()来构建会话的时候,我们可以先构建一个session然后再定义操作(operation),如果我们使用tf.Session()来构建会话我们需要在会话构建之前定义好全部的操作(operation)然后再构建会话。tf.InteractiveSession()还可以用.eval()来代替session.run().


np.savetxt(filename, x, delimiter, newline='\n', header='',comments='#').filename是文件名,x是对象(数组),delimiter是分隔符,即将x里面的对象按什么划分。header是标识。comments是注释,在header前面加。

np.c_[a, b]将切片对象沿列转化为连接。


tf.nn.conv2d 和 tf.layers.conv2d。参数不同,但都是进行卷积。