Ø一个知识点,一个案例,一段代码,理论与实践结合
Ø通俗简单易懂,每个案例代码都非常简短.
Ø代码注解非常清楚
Ø系统化学习,包括编程,数学,numpy,tensorflow,matplotlib
让大家更快,更好的掌握人工智能
花两小时改变自己的命运
1.卷积神经网络模型
1.1.卷积
卷积神经网络的名字来源于“卷积”运算。在卷积神经网络中,卷积的主要目的是从输入图像中提取特征。通过使用输入数据中的小方块来学习图像特征,卷积保留了像素间的空间关系。
卷积就是输入矩阵与过滤器矩阵之间对应位置相乘,一卷一卷的移动,如下:
除去name参数用以指定该操作的name,与方法有关的一共五个参数:
第一个参数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]这种形式。
importtensorflowastf
#定义输入数据
input = tf.constant([[1,1,1,,],
[,1,1,1,],
[,,1,1,1],
[,,1,1,],
[,1,1,,]],dtype=tf.float32)
#定义过滤器
filter = tf.constant([[1,,1],
[,1,],
[1,,1]],dtype=tf.float32)
#修改输入数据维度,[batch, in_height, in_width, in_channels]这样的shape,具体含义是[训练时一个batch的图片数量,图片高度,图片宽度,图像通道数],注意这是一个4维的Tensor
input = tf.reshape(input,(1,5,5,1))
#修改过滤器维度,相当于CNN中的卷积核,它要求是一个Tensor,具有[filter_height, filter_width, in_channels, out_channels]这样的shape,具体含义是[卷积核的高度,卷积核的宽度,图像通道数,卷积核个数]
filter = tf.reshape(filter,(3,3,1,1))
#求卷积的值strides = [1, stride, stride, 1]卷积核的水平移动步数和垂直移动步数是相同的
conv =tf.nn.conv2d(input,filter,strides=[1,1,1,1],padding="VALID")
withtf.Session()assess:
print("求卷积的值,padding valid:",sess.run(conv))
求卷积的值,padding valid: [[[[4.][3.][4.]]
[[2.][4.][3.]]
[[2.][3.][4.]]]]
领取专属 10元无门槛券
私享最新 技术干货