tensrflow-cnn
tensorflow-cnn :
cnn :卷积神经网络
关于cnn 网上很多例子,这里就不一一说了,大家随便下载一个都能,配置好环境,问题都不大。这里记录一下个人的理解,如果有不对的地方欢迎大家指出来。
tf.nn.conv2d ()
参数1: input 代表做卷积的输入图像的Tensor,其shape要求为[batch, in_height, in_width, in_channels],:[图片的数量, 图片高度, 图片宽度, 图像通道数],数据类型为float32或float64;
参数2:filter 相当于CNN中的卷积核,该Tensor的shape要求为[filter_height, filter_width, in_channels, out_channels],具体含义是[卷积核的高度,卷积核的宽度,图像通道数,卷积核个数],要求类型与参数input相同,filter的通道数要求与input的in_channels一致,即第三维in_channels,就是参数input的第四维;
重点就是就是它,什么是卷积核,玩过opecv 的同学就可以理解为 滤波器,特征提取器。通过它的过滤,提取到原图的特征。有多少个卷积核,最后就会产生出多少个之余原图的新图像。
举个例子,你的输入是[10,100,100,3](100*100,3通道的图片,一共10张),经过tf.nn.conv2d (filter=[3,3,3,32]) ,就会产生出 [10,100,100,32] 的数据, 形状的图片每张图片的通道数变成了32.如果把数据拆开 ,把其中每张图片单独拿出来 形状是[100,100,32].然后再把其中每个通道单独显示[100,100],就可以看到,经过tf.nn.conv2d ()函数后得到的图像。从这里,我想大家就能理解tf.nn.conv2d ()到底在干嘛。
以上是学习卷积过程中个人卡住的地方,说出来与大家分享,有不对欢迎指出。