tensorflow-卷积神经网络-识别验证码

本文介绍了卷积神经网络(CNN)在图像识别领域的优势,特别是在验证码识别中的应用。相比于全连接神经网络,CNN能更好地捕捉图像特征,并通过卷积、池化等操作减少参数数量和计算复杂度。文章详细展示了使用TensorFlow构建CNN的过程,包括输入层、卷积层、池化层和全连接层的设计,以实现对验证码的识别。
摘要由CSDN通过智能技术生成

卷积神经网络:做图像领域比较好。

对比之前简单的神经网络(输入,隐层,输出),隐层里面只有一个 全连接层。
卷积神经网络(输入,多次 [conv ,一般选取rule函数,pool],全连接,输出)

区别:每一层在前一层基础上学习识别一组特定的特征。
随着神经网络深度增加,节点所能识别的特征也就越来越复杂。

全连接神经网络的缺点

1权重太多:如果更大的图片,比如200 * 200 * 3=12w个像素点,
输入12w,输出有10个类别 ,就需要120w个权重 .计算量太大

2对于图像识别来说,像素与周围的像素都是联系比较紧密的。全连接神经网络 没有利用像素之间位置信息,

3层数限制

卷积层(扩大):通过在原图上平移来提取特征,每一个特征
就是一个特征映射

池化层(缩小):通过特征后稀疏参数来减少学习的参数,降低
网络的复杂度,(最大池化和平均池化)

发展历史

在这里插入图片描述

filter 观察窗体

1.定义一个过滤器(观察窗口) 是有大小的(比如11,33,5*5),
2.观察窗口(带有权重),观察窗口的权重与 窗体里面的像素值 做线性回归
(就有一个输出值) 观察一次就有一个输出值。
3.窗体向右平移(步长),再次观察 又有一个结果输出值
4.步长: 一般选择 1. 观察更加仔细一点。
在这里插入图片描述

在这里插入图片描述

卷积神经网络识别图片案例

设计:

输入层:输入数据【None,784】 ,None代表图片张图,784 = 28281
输入【None,28,28,1】
一号卷积层:
卷积(32个filter,55窗体大小,stride=1,padding=‘same’)
(输出[None,28,28,32]),
激活,
池化,(2
2,padding=’same’,stride=2)
(输出[None,14,14,32]),

(输入[None,14,14,32])
二号卷积层:卷积,(64个filter,55,stride=1,padding=‘same’) (输出[None,14,14,64]),
激活,
池化,(2
2,padding=’same’,stride=2)
(输出[None,7,7,64])

输入 [None,7,7,64] 变化形状 [None,7764]为输入
全连接层:
计算公式 [None ,7764] * [7764 ,10] 权重 + bias = [None,10]

输出层:
最终结果输出[None,10]
None代表有多少张图片,每张图片一个10位one-hot编码结果 例如[0,0,0,0,0,1,0,0,0,0] 代表数字5

# 定义一个初始化权重的函数
def weight_variables(shape):
    w = tf.Variable(tf.random_normal(shape=shape, mean=0.0, stddev=1.0))
    return w


# 定义一个初始化偏置的函数
def bias_variables(shape):
    b = tf.Variable(tf.constant(0.0, shape=shape))
    return b


def model():
    """
    自定义的卷积模型
    :return:
    """
    # 1、准备数据的占位符 x [None, 784]  y_true [None, 10]
    with tf.variable_s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值