tensorflow LeNet

2023-11-18

LeNet 即 LeNet5,由 Yann LeCun 在 1998 年提出,做为最早的卷积神经网络之一,是许 多神经网络架构的起点,其网络结构如图 下所示。

 借鉴点:共享卷积核,减少网络参数。

        在后期发展中,降采样层被 m a x _ p o o l i n g max\_poolingmax_pooling 所取代,分类也被 s o f t m a x softmaxsoftmax 所替代,现在 T e n s o r f l o w TensorflowTensorflow 或者其他框架下的网络实现为:

 

 总结:
(1)到现在LeNet-5的实际应用价值并不大,更多的时候是作为学习实例,了解其中卷积、采样、全连接、激活函数等CNN基础内容。
(2)降采样和池化的区别:原始的信号处理采用的就是采样,说白了就是采集样本,这种采样一旦方式确定那么接下来所有框选取的像素位置都是固定的,要么隔一个、要么隔两个;池化中平均池化是利用了框选位置的所有像素特征,最大池化虽然只用了最大像素值,但是这个像素值的位置是不确定的,所选取的特征也是具有代表性的。
(3)LeNet-5 对于小尺寸的图像还能够有一定的识别率,但是当输入图像尺寸很大时,为了满足网络对于输入的要求需要进行缩放,就会丢失局部细微特征,LeNet-5 就比较难捕捉不同类别间的区别了。

代码实现:

import tensorflow as tf
from matplotlib import pyplot as plt
import numpy as np
import tensorflow as tf
import os
import numpy as np
from matplotlib import pyplot as plt
from tensorflow.keras.layers import Conv2D, BatchNormalization, Activation, MaxPool2D, Dropout, Flatten, Dense
from tensorflow.keras import Model

np.set_printoptions(threshold=np.inf)

cifar10 = tf.keras.datasets.cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0


class LeNet(Model):
    def __init__(self):
        super(LeNet, self).__init__()
        #第一层
        self.c1 = Conv2D(filters=6, kernel_size=(5, 5),activation='sigmoid')
        self.p1 = MaxPool2D(pool_size=(2, 2), strides=2)
        
        #第二层
        self.c2 = Conv2D(filters=16, kernel_size=(5, 5),activation='sigmoid')
        self.p2 = MaxPool2D(pool_size=(2, 2), strides=2)

        self.flatten = Flatten()
        
        #三层连接网络
        self.f1 = Dense(120, activation='sigmoid')
        self.f2 = Dense(84, activation='sigmoid')
        self.f3 = Dense(10, activation='softmax')


    def call(self, x):
        x = self.c1(x)
        x = self.p1(x)

        x = self.c2(x)
        x = self.p2(x)

        x = self.flatten(x)
        x = self.f1(x)
        x = self.f2(x)
        y = self.f3(x)
        return y


model = LeNet()
optimizer = tf.keras.optimizers.Adam()
model.compile(optimizer=optimizer ,
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=['sparse_categorical_accuracy'])


history = model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1)
model.summary()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tensorflow LeNet 的相关文章

随机推荐

  • docker安装openwrt

    docker安装openwrt docker安装openwrt 安装问题 1 docker Error response from daemon failed to create the macvlan port devic 插件安装 do
  • [Basic]测试的概念 - 集成测试- 系统测试- 验收测试- 回归测试 -

    b 集成测试 英文是Integration Testing b 集成测试是指一个应用系统的各个部件的联合测试 以决定他们能否在一起共同工作并没有冲突 部件可以是代码块 独立的应用 网络上的客户端或服务器端程序 这种类型的测试尤其与客户服务器
  • Mpvue介绍

    Mpvue是什么 Mpvue是一个基于Vue的微信小程序前端框架 可以让我们用vue的语法写小程序的项目 简单来说就是 以前我们写微信小程序 必须借助微信小程序的开发者工具 微信开发工具提供的语法才能写小程序 Mpvue的出现 让我们可以先
  • Java开发之高并发必备篇(一)——线程基础

    提到高并发 这几年几乎是火遍编程界的网络名词了 无它 随着现在互联网的高速发展特别是电商平台类的应用快速发展 互联网服务内容也越来越丰富 用户越来越多 淘宝 天猫 京东 拼夕夕 抖音等几乎成为了广大群众每日必用的应用了 而在这些应用中见到的
  • Pocket PC 2003中文模拟器

    在用EVC中有自带的模拟器STANDSDK emulator 进行基于WinCE平台的开发时 Pocket PC 2003 SDK是必不可少的 在安装完PPC后可以安装其中文补丁第二版 这样模拟器所使用的就是中文操作系统界面了 如果没有安装
  • dbscan聚类python_20分钟学会DBSCAN聚类算法

    DBSCAN是一种非常著名的基于密度的聚类算法 其英文全称是 Density Based Spatial Clustering of Applications with Noise 意即 一种基于密度 对噪声鲁棒的空间聚类算法 直观效果上看
  • 利用python语言编程控制LEGO EV3

    1 环境搭建 安装WinSCP 网址 https sourceforge net projects winscp 下载一个自己喜欢的python IDE 例如pycharm 将EV3的系统换为ev3dev 参考网址 https www ev
  • 适合儿童学习的编程语言一览

    近两年我们常常会看到如下新闻 4 5岁的就能具备独立开发APP的能力 6 7岁的孩子甚至可以设计出可以上线的小游戏 在我们感慨小朋友们出色的编程能力的同时 不难发现编程已从边缘学科逐渐被大家重视 编程普及率不断提升 而且逐渐呈现出低龄化发展
  • python——常见ERROR汇总

    读取txt csv等数据时 UnicodeDecodeError gbk codec can t decode byte 0xbf in position 2 illegal multibyte sequence 释义 Unicode的解码
  • 80. 删除有序数组中的重复项 II

    Powered by NEFU AB IN Link 文章目录 80 删除有序数组中的重复项 II 题意 思路 代码 80 删除有序数组中的重复项 II 题意 给你一个有序数组 nums 请你 原地 删除重复出现的元素 使得出现次数超过两次
  • 和愚蠢的人打交道_如何与工作困难的人打交道

    和愚蠢的人打交道 Humans are social creatures who seek personal validation based on how others interact with them We feel good an
  • (转) serialVersionUID作用

    Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的 在进行反序列化时 JVM会把传来的字节流中的serialVersionUID与本地相应实体 类 的serialVersionUID进行比较 如果相
  • C++11 -- 包装器

    文章目录 function包装器 function包装器的概念 function的运用 function实例化 使用function解决逆波兰表达式 bind包装器 bind包装器相关介绍 bind调整函数形参传参顺序 bind绑定函数固定
  • 双机热备,如何用浮动IP跨网络访问异地服务

    环境是这样的 本地有两台服务器A B A 192 168 151 170 主 B 192 168 151 171 备 双机的浮动IP 192 168 151 174 承载网IP 10 182 254 164 异地服务端 172 16 122
  • python怎么去除字符串的空格、回车

    内容取此 str 123 456 print str strip 去除左右两边的空格 print str lstrip 去除左边的空格 print str rstrip 去除右边的空格 print str replace 去除字符串全部空格
  • ELK详解(十七)——filebeat输出到Redis和Elasticsearch实战

    今天继续给大家介绍Linux运维相关知识 本文主要内容是使用filebeat将日志输出到Redis和Elasticsearch的实战配置 在ELK详解 十六 filebeat安装与使用一文中 我们介绍了filebeat的安装 部署和简单应用
  • 基于SpringBoot-Dubbo的微服务快速开发框架

    简介 基于Dubbo的分布式 微服务基础框架 为前端提供脚手架开发服务 结合前一篇 Web AP快速开发基础框架 可快速上手基于Dubbo的分布式服务开发 项目代码 https github com backkoms web service
  • 微信小程序最新获取头像昵称方式

    前言 版本历史变迁 一 获取头像的正确姿势 二 获取昵称的正确姿势 总结 前言 产品需要获取微信用户的昵称和头像 这这还不简单 so easy 通过wx getUserProfile或者 wx getUserInfo 就可以获取到 但是获取
  • Nacos安装配置详细流程

    快速导航 1 Nacos安装 1 1概述 1 2 下载 1 3 安装 1 4 启动和关闭 1 5 测试 2 Nacos持久化 2 1为什么持久化 2 2配置Nacos持久化 2 2 1 切换数据库 2 2 2 初始化数据库 2 2 3 测试
  • tensorflow LeNet

    LeNet 即 LeNet5 由 Yann LeCun 在 1998 年提出 做为最早的卷积神经网络之一 是许 多神经网络架构的起点 其网络结构如图 下所示 借鉴点 共享卷积核 减少网络参数 在后期发展中 降采样层被 m a x p o o