矩阵生成:
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。
例如:
- import tensorflow as tf;
- A = [[0.8,0.6,0.3], [0.1,0.6,0.4]]
- B = [1, 1]
- out = tf.nn.in_top_k(A, B, 1)
- with tf.Session() as sess:
- sess.run(tf.initialize_all_variables())
- print sess.run(out)
[False 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]
这种形式