tensorflow学习笔记(七):CNN手写体(MNIST)识别

本文介绍了卷积神经网络(CNN)的基本组成,包括卷积层、池化层、激活函数等,并通过TensorFlow展示了CNN在MNIST手写体识别中的应用,包括数据集介绍、网络结构描述及项目实战,最终得到了良好的识别效果。
摘要由CSDN通过智能技术生成


一、CNN简介

一般的卷积神经网络由以下几个层组成:卷积层,池化层,非线性激活函数,全连接层。这四者构成了常见的卷积神经网络。当然,损失函数也至关重要,还有各种各样的网络的优化,使得网络准确率更高。
在这里插入图片描述
CNN的理论知识及推导请参照:卷积神经网络CNN模块化剖析。

二、主要函数

1、卷积 tf.nn.conv2d()

顾名思义,用于卷积,定义如下:

tf.nn.conv2d (input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None)

参数

  • input : 输入的要做卷积的图片,要求为一个张量,shape为 [ batch, in_height, in_weight, in_channel ],其中batch为图片的数量,in_height 为图片高度,in_weight 为图片宽度,in_channel
    为图片的通道数,灰度图该值为1,彩色图为3;

  • filter: 卷积核,要求也是一个张量,shape为 [ filter_height, filter_weight, in_channel, out_channels ],其中 filter_height 为卷积核高度,filter_weight
    为卷积核宽度,in_channel 是图像通道数 ,和 input 的 in_channel 要保持一致,out_channel
    是卷积核数量;

  • strides: 卷积时在图像每一维的步长,这是一个一维的向量,[ 1, strides, strides, 1],第一位和最后一位固定必须是1,第二位参数表示x方向,第三位参数表示y方向;

  • padding: string类型,值为“SAME” 和 “VALID”,表示的是卷积的形式,是否考虑边界。”SAME”是考虑边界,不足的时候用0去填充周围,”VALID”则不考虑;

  • use_cudnn_on_gpu: bool类型,是否使用cudnn加速,默认为true。

返回值:结果返回一个Tensor,这个输出,就是我们常说的feature map。

程序示例:

kernel = tf.Variable(tf.truncated_normal([3,3,384,256], dtype=tf.float32, stddev=1e-1), name='weights')
conv = tf.nn.conv2d(conv3, kernel, [1,1,1,1],padding='SAME')

2、池化 tf.nn.max_pool()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值