矩阵生成:

tf.ones(shape,type=tf.float32,name=None)   //全1张量

tf.zeros(shape,type=tf.float32,name=None)   //全0张量

tf.constant(value,dtype=None,shape=None,name=None)  //创建一个常量tensor,先给出value,可以设定其shape # Constant 1-D Tensor populated with value list. 

                                                             tensor = tf.constant([1, 2, 3, 4, 5, 6, 7]) => [1 2 3 4 5 6 7
                                                                                              # Constant 2-D tensor populated with scalar value -1. 
                                                   tensor = tf.constant(-1.0, shape=[2, 3]) => [[-1. -1. -1.] [-1. -1. -1.]
tensor.get_shape() :得到一个元组,表示张量大小。

tf.nn.in_top_k主要是用于计算预测的结果和实际结果的是否相等,返回一个bool类型的张 量,tf.nn.in_top_k(prediction, target, K):prediction就是表示你预测的结果,大小就是预测样本的数量乘以输出的维度,类型是tf.float32等。target就是实际样本类别 的标签,大小就是样本数量的个数。K表示每个样本的预测结果的前K个最大的数里面是否含有target中的值。一般都是取1。

例如:

  1. import tensorflow as tf;  
  2.   
  3. A = [[0.8,0.6,0.3], [0.1,0.6,0.4]]  
  4. B = [1, 1]  
  5. out = tf.nn.in_top_k(A, B, 1)  
  6. with tf.Session() as sess:  
  7.     sess.run(tf.initialize_all_variables())  
  8.     print sess.run(out)  
输出:

[False  True]


解释:因为A张量里面的第一个元素的最大值的标签是0,第二个元素的最大值的标签是1.。但是实际的确是1和1.所以输出就是False 和True。如果把K改成2,那么第一个元素的前面2个最大的元素的位置是0,1,第二个的就是1,2。实际结果是1和1。包含在里面,所以输出结果就是True 和True.如果K的值大于张量A的列,那就表示输出结果都是true
卷积函数:
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None,data_format=None,name=None):  卷积函数
data_format:表示输入的格式,有两种分别为:"NHWC" 和 "NCHW",默认为 "NHWC".
input:输入是一个 4 维格式的(图像)数据,数据的 shape 由 data_format 决定:当 data_format 为 "NHWC" 输入数据的 shape 表示为 [batch, in_height, in_width, in_channels],分别表示训练时一个 batch 的图片数量、图片高度、 图片宽度、 图像通道数。
filter:卷积核是一个 4 维格式的数据:shape 表示为:[height,width,in_channels, out_channels],分别表示卷积核的高、宽、深度(与输入的 in_channels 应相同)、输出 feature map 的个数(即卷积核的个数,输出通道的个数).
strides:表示步长:一个长度为 4 的一维列表,strides = [batch , in_height , in_width, in_channels]。其中 batch 和 in_channels 要求一定为 1,即只能在一个样本的一个通道上的特征图上进行移动,in_height , in_width 表示卷积核在特征图的高度和宽度上移动的布长,即strideheight 和 stridewidth 。
padding:表示填充方式,string类型的量,只能是"SAME"(表示让卷积的输出与输入保持同样的尺寸),"VALID"其中之一
 
tf.nn.max_pool(value, ksize, strides, padding, name =None):                            最大池化函数
value:[batch, in_height, in_width, in_channels]
ksize:池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1
strides:和卷积类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]
padding:和卷积类似,可以取'VALID' 或者'SAME'
返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式