卷积神经网络——解决参数太多的问题

卷积:有效提取图像特征的方法

计算方法:
卷积神经网络——解决参数太多的问题_第1张图片
输出图片的边长:(输入图片边长-卷积核边长+1)/步长
步长指的是每次移动的距离单位

padding

1.输入图片全0填充
保证输出和输入图片的大小一样

是否全0填充
SAME:输入长/步长(向上取整 eg:2.4取3)
VALID:(输入长-核长+1)/步长(向上取整)

卷积函数

tf.nn.conv2d(input,filter,strides,padding,use_cudnn_on_gpu=None,name=None)
#输入描述input:[batch,in_height,in_width,in_channels]
#卷积核描述
#filter:[filter_height,filter_width,in_channels,out_channels]
#strides步长:[1,x,y,1]

使用卷积提取图片轮廓

问题描述:将三通道图片显示并通过卷积提取一通道轮廓图

#sobel卷积核的手动输入,这里选用的是3x3的卷积核,
因为输入图片是三通道的,所以卷积核的每一个位置都扩展成三个
full=np.reshape(image,[1,640,640,1])
filter=tf.Variable(tf.constant([
[-1.0,-1.0,-1.0],[0,0,0],[1.0,1.0,1.0],
[-2.0,-2.0,-2.0],[0,0,0],[2.0,2.0,2.0],
[-1.0,-1.0,-1.0],[0,0,0],[1.0,1.0,1.0]],shape=[3,3,3,1]))

np.reshape()函数详解,

池化:减少特征数量

tf.nn.max_pool(input,ksize,strides,padding,name=None)
tf.nn.avg_pool(input,ksize,strides,padding,name=None)
#input:[batch,height,width,channels]
#ksize:[1,height,width,1],池化窗口的大小
#strides:[1,strides,strides,1]

使用卷积神经网络对图片分类

使用CIFAR图片集

导入并显示CIFAR数据集

images_test,labels_test=cifar10_input.inputs(eval_data=True,
dir=dir_data,batch_size=batch_size)
#

这一部分关于cifar-10等等还不清楚
cifar10_input的其他功能
增加数据的办法

tf.random_crop #随意剪裁
tf.image.random_flip_left_right #随机左右翻转
tf.image.random_brightness  #随即亮度变化
tf.image.random_contrast  #随机对比度变化
tf.image.per_image_standardization  #图片标准化

队列机制
通过多线程将读取数据计算数据分开
1.队列线程启动及挂起机制

协调器的用法演示

tf.FIFOQueue()函数解析
tf.assign_add(c,ref)函数解析

tf.assign_add(ref,value, use_locking=None,name=None)
#ref=ref+value,将值value加到ref上

你可能感兴趣的:(TensorFlow学习笔记)