图像分类网络4——LeNet-5识别CIFAR100

1 LeNet-5(卷积神经网络的开篇之作)

1.1 简介

LeNet-5是Y. Lecun(杨丽坤深度学习大佬)1998年提出的,
论文地址:
https://ieeexplore.ieee.org/document/726791?reload=true&arnumber=726791
卷积神经网络的入门结构

在这里插入图片描述
上面实际上是经过以下7步得到的
(1)卷积
(2)池化
(3)卷积
(4)池化
(5)卷积
(6)全连接
(7)全连接
下面这两篇文章介绍的特别好:
https://cuijiahua.com/blog/2018/01/dl_3.html

https://blog.csdn.net/mmm_jsw/article/details/88185491?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&dist_request_id=1331303.10113.16183056116804221&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

1.2 3大特点

CNN主要有三大特色,分别是局部感知、权重共享和多卷积核。

  1. 局部感知
    局部感知就是我们上面说的感受野,实际上就是卷积核和图像卷积的时候,每次卷积核所覆盖的像素只是一小部分,是局部特征,所以说是局部感知。CNN是一个从局部到整体的过程(局部到整体的实现是在全连通层),而传统的神经网络是整体的过程。

  2. 权重共享
    权值共享:不同的图像或者同一张图像共用一个卷积核,减少重复的卷积核。同一张图像当中可能会出现相同的特征,共享卷积核能够进一步减少权值参数。

  3. 多卷积核
    一种卷积核代表的是一种特征,为获得更多不同的特征集合,卷积层会有多个卷积核,生成不同的特征,这也是为什么卷积后的图片的高,每一个图片代表不同的特征。

2 CIFAR100数据集

这个数据集就像CIFAR-10,除了它有100个类,每个类包含600个图像。,每类各有500个训练图像和100个测试图像。CIFAR-100中的100个类被分成20个超类。每个图像都带有一个“精细”标签(它所属的类)和一个“粗糙”标签(它所属的超类) 以下是CIFAR-100中的类别列表:

在这里插入图片描述
在这里插入图片描述

3 代码

## LeNet-5识别CIFAR100

import tensorflow as tf
import os
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"

class CNNMnist(object):
    def __init__(self):

        (self.train, self.train_label), (self.test, self.test_label) = \
            tf.keras.datasets.cifar100.load_data()

        self.train = self.train.reshape(-1, 32, 32, 3) / 255.0
        self.test = self.test.reshape(-1, 32, 32, 3) / 255.0

    model = tf.keras.Sequential([
        tf.keras.layers.Conv2D(32, kernel_size=5, strides=1,
                               padding='same', data_format='channels_last', activation=tf.nn.relu),
        tf.keras.layers.MaxPool2D(pool_size=2, strides=2, padding='same'),
        tf.keras.layers.Conv2D(64, kernel_size=5, strides=1,
                               padding='same', data_format='channels_last', activation=tf.nn.relu),
        tf.keras.layers.MaxPool2D(pool_size=2, strides=2, padding='same'),
        tf.keras.layers.Conv2D(128, kernel_size=5,strides=1,
                               padding="same", data_format='channels_last', activation=tf.nn.relu),

        tf.keras.layers.Flatten(),

        tf.keras.layers.Dense(1024, activation=tf.nn.relu),
        tf.keras.layers.Dense(100, activation=tf.nn.softmax),
    ])

    def compile(self):
        CNNMnist.model.compile(optimizer=tf.keras.optimizers.Adam(),
                               loss=tf.keras.losses.sparse_categorical_crossentropy,
                               metrics=['accuracy'])
        return None

    def fit(self):
        CNNMnist.model.fit(self.train, self.train_label, epochs=1, batch_size=32)

        return None

    def evaluate(self):
        test_loss, test_acc = CNNMnist.model.evaluate(self.test, self.test_label)

        print(test_loss, test_acc)
        return None


if __name__ == '__main__':
    cnn = CNNMnist()

    cnn.compile()

    cnn.fit()

    cnn.evaluate()

    print(CNNMnist.model.summary())
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
LeNet-5是一种经典的卷积神经网络,用于手写数字的识别。它在1998年由Yann LeCun等人提出,旨在通过学习感知到的局部特征来实现数字的自动识别和分类。 LeNet-5主要由两个重要部分组成:卷积神经网络(CNN)和全连接层。 输入图像首先经过两个卷积层和池化层,用于提取图像的特征。卷积层通过滑动窗口计算每个窗口中的特征,然后池化层对特征图进行降采样,减少计算量和参数个数。随后,通过几个全连接层对提取的特征进行分类,最终输出层得到识别结果。 在训练阶段,LeNet-5使用反向传播算法来更新网络权重,最小化训练样本与目标标签之间的损失函数。该损失函数可衡量网络对不同数字的分类准确性。 为了识别手写数字'c',我们需要准备一组训练样本包含手写数字'c'的图像及其标签,并将这些样本输入LeNet-5进行训练。训练过程中,网络将学习到特定于'c'的特征,以便能够准确地区分出'c'与其他数字。 完成训练后,我们可以用测试集对LeNet-5进行评估。将手写数字'c'的图像输入网络,根据输出层的预测结果即可进行识别判断。如果网络的输出结果与'c'标签匹配,则说明LeNet-5成功地识别了手写数字'c'。 总而言之,LeNet-5是一种使用卷积神经网络实现手写数字识别的经典模型。通过训练和调整网络权重,LeNet-5能够识别手写数字'c'。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓码bigdata

如果文章给您带来帮助,感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值