机器学习--cnn图像分类相关函数

tf.train.string_input_produce  :将文件名列表交给tf.train.string_input_producer 函数.string_input_producer来生成一个先入先出的队列, 文件阅读器会需要它来读取数据。
tf.FixedLengthRecordReader      :从一个文件中输出固定长度Recorder的类,是从ReaderBase继承而来,ReaderBase是一个管理各种类型Reader(Reader数据读取的类)的基
类,它可以将字符串(一般是一系列文件名)转化为Records(每个Recorder是一个Key,Value对),Reader的每一步操作都会生成一个Record,这些Records都是从这些文件内容里提炼出
来的。Reader可以通过Read()方法,从队列Queue里出列一条记录Recorder,通过队列可以进行解耦。Reader不兼容eager execution。
tf.slice:从列表、数组、张量等对象中抽取一部分数据   begin和size是两个多维列表,他们共同决定了要抽取的数据的开始和结束位置  begin表示从inputs的哪几个维度上的哪个元素
开始抽取 size表示在inputs的各个维度上抽取的元素个数 若begin[]或size[]中出现-1,表示抽取对应维度上的所有元素
tf.reshape:
tf.image.resize_image_with_crop_or_pad:剪裁或填充处理,会根据原图像的尺寸和指定的目标图像的尺寸选择剪裁还是填充,如果原图像尺寸大于目标图像尺寸,则在中心位置剪裁,反之则用黑色像素填充。
tf.image.per_image_standardization:此函数的运算过程是将整幅图片标准化(不是归一化),加速神经网络的训练。主要有如下操作,(x - mean) / adjusted_stddev,其中x为图片的RGB三通道像素值,
mean分别为三通道像素的均值,adjusted_stddev = max(stddev, 1.0/sqrt(image.NumElements()))。stddev为三通道像素的标准差,image.NumElements()计算的是三通道各自的像素个数。
tf.truncated_normal_initializer:从截断的正态分布中输出随机值。生成的值服从具有指定平均值和标准偏差的正态分布,如果生成的值大于平均值2个标准偏差的值则丢弃重新选择。ARGS:ARGS:mean:一个python标量或一
个标量张量。要生成的随机值的均值。stddev:一个python标量或一个标量张量。要生成的随机值的标准偏差。seed:一个Python整数。用于创建随机种子。查看 tf.set_random_seed 行为。

tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None):第一个参数input:指需要做卷积的输入图像,它要求是一个Tensor,具有[batch, in_height, in_width, in_channels]这样的shape,具体含义是[训练时一个batch的图片数量, 图片高度, 图片宽度, 图像通道数],注意这是一个4维的Tensor,要求类型为float32和float64其中之一

第二个参数filter:相当于CNN中的卷积核,它要求是一个Tensor,具有[filter_height, filter_width, in_channels, out_channels]这样的shape,具体含义是[卷积核的高度,卷积核的宽度,图像通道数,卷积核个数],要求类型与参数input相同,有一个地方需要注意,第三维in_channels,就是参数input的第四维

第三个参数strides:卷积时在图像每一维的步长,这是一个一维的向量,长度4

第四个参数padding:string类型的量,只能是"SAME","VALID"其中之一,这个值决定了不同的卷积方式(后面会介绍)

第五个参数:use_cudnn_on_gpu:bool类型,是否使用cudnn加速,默认为true

结果返回一个Tensor,这个输出,就是我们常说的feature map,shape仍然是[batch, height, width, channels]这种形式

 
 

 

猜你喜欢

转载自www.cnblogs.com/timoa/p/10774902.html