人工智能学习案例-卷积神经网络

Ø一个知识点,一个案例,一段代码,理论与实践结合

Ø通俗简单易懂,每个案例代码都非常简短.

Ø代码注解非常清楚

Ø系统化学习,包括编程,数学,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.]]]]

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180515G1O7OK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券