TensorFlow实战5:利用卷积神经网络对图像分类(初阶:MNIST手写数字)代码实现

本文通过TensorFlow实现卷积神经网络(CNN)对MNIST手写数字的识别,介绍CNN在图像识别中的优势及步骤,包括数据准备、卷积、激活、池化、全连接层、损失计算和训练过程。
摘要由CSDN通过智能技术生成

之前用简单的神经网络实现过一次手写数字识别,这次会使用卷积神经网络来进行识别。

普通的神经网络(ANN)来对图像进行识别时,主要有如下缺点:
1. 参数太多
2. 没有利用像素之间的位置关系,对于图线识别任务来说,每个像素与周围的像素都是联系的很紧密的
3. 神经网络的层数受限制

但是利用卷积神经网络来解决图像识别分类问题,就可以避免上述的问题。
此篇文章中实现卷积神经网络对图像进行分类的步骤如下:
1. 准备数据
2. 卷积、激活、池化(两层)
3. 两层全连接层(第一层先特征加权,然后激活;第二层特征加权)
4. 使用softmax和交叉熵计算损失
5. 用梯度下降减少损失,计算准确率
6. 在运行会话时,进行1000次迭代,每100次打印结果

代码如下:

# 生成权重
def weight_variable(shape):
    w = tf.Variable(tf.random_normal(shape=shape, mean=0.0, stddev=1.0))
    return w


# 生成偏置
def bias_variable(shape):
    b = tf.Variable(tf.constant(0.0, shape=shape))
    return b


def model():
    """
    搭建的模型函数
    :return:模型预测值、样本真实值、特征值
    """

    # 1、准确数据的输入占位符,x,y
    with tf.variable_scope("data"):
        # 特征值
        x = tf.placeholder(tf.float32, [None, 784])

        # 标签值
        y_true = tf.placeholder(tf.int32, [None, 10])

    # 2、进行卷积层1
    with tf.variable_scope("conv_1"):
        # 准备参数ÿ
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值