计算方法:
输出图片的边长:(输入图片边长-卷积核边长+1)/步长
步长指的是每次移动的距离单位
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上