深度学习笔记《一》:keras_core.layers.Conv2D()

news2024/11/24 20:45:39

一、说明

        卷积,池化,激活函数,这三者号称是深度神经网络的三驾马车;其中卷积是最复杂的一个,因此,对卷积这个东西需要精心认知,这样对后面学习大有帮助。本篇为系列博文,专门介绍Ceras库的各种API的应用方法,力求从根本上学习 。

二、卷积层(Conv2D层)

        该层一个流动性创建,该流动性与层输入以产生输出张量。如果 use_bias 为 True,则创建一个偏置允许将其添加到输出中。最后,如果激活不是无,则创建一个偏置评估输出。

        启用图层模型中的第一层时,请提供关键字参数input_shape(整数元组或None,不包括结束轴),例如input_shape=(128, 128, 3)对于data_format=“中的128x128 RGB图片channels_last。

  • 函数名称:

        keras_core.layers.Conv2D()

  • 函数原型:
keras_core.layers.Conv2D(
    filters,
    kernel_size,
    strides=(1, 1),
    padding="valid",
    data_format=None,
    dilation_rate=(1, 1),
    groups=1,
    activation=None,
    use_bias=True,
    kernel_initializer="glorot_uniform",
    bias_initializer="zeros",
    kernel_regularizer=None,
    bias_regularizer=None,
    activity_regularizer=None,
    kernel_constraint=None,
    bias_constraint=None,
    **kwargs
)

  • 2D 卷积层描述。

该层创建一个卷积核,该卷积核与单个空间(或时间)维度上的层输入进行卷积,以产生输出张量。如果use_bias为 True,则创建偏置向量并将其添加到输出中。最后,如果activation不是None,它也应用于输出。

  •  参数解释
参数名称格式意义描述对象【输入,输出 】
filtersint输出空间的维度(卷积中过滤器的数量)是输出
kernel_size(int,int)一个整数或 2 个整数的元组/列表,指定 2D 卷积窗口的高度和宽度。可以是单个整数,为所有空间维度指定相同的值。内部
strides(int,int)int 或 2 个整数的元组/列表,指定卷积的步长。strides > 1与 dilation_rate > 1不兼容。(dilation_rate是膨胀卷积,以后再谈内部
padding

字符串(‘valid’

‘same’

"valid"或者"same"(不区分大小写)。 "valid"意味着没有填充。"same"结果均匀地填充到输入的左/右或上/下,使得输出具有与输入相同的高度/宽度尺寸。内部
data_format

字符串

"channels_last"或

"channels_first"

"channels_last""channels_first"。输入中维度的顺序。

"channels_last" 对应于具有 shape 的输入 (batch_size, height, width,channels) ,而"channels_first"对应于具有 shape 的输入 (batch_size, channels, height, width)。它默认为 image_data_formatKeras 配置文件中找到的值,位于 ~/.keras/keras.json

如果您从未设置过它,那么它将是 "channels_last"

dilation_rate int或 2 个整数的元组/列表,指定用于扩张卷积的扩张率。
groupsint一个正整数,指定输入沿通道轴分割的组数。每组分别与filters // groups滤波器进行卷积。输出是所有结果groups沿通道轴的串联。输入通道 和filters必须都能被 整除groups
activation字符串激活函数。如果None,则不应用任何激活。
use_biasbool 如果True,偏差将添加到输出中。
kernel_initializer函数指针卷积核的初始化器。如果,则将使用None默认初始化程序 ( )。"glorot_uniform"
bias_initializer函数指针:偏置向量的初始化器。如果,则将使用None默认初始化程序 ( )。"zeros"
kernel_regularizer函数指针 卷积核的可选正则化器。
bias_regularizer函数指针:偏置向量的可选正则化器。
Activity_regularizer函数指针:输出的可选正则化函数。
kernel_constraint函数指针可选的投影函数,在更新后应用于内核Optimizer(例如,用于实现层权重的范数约束或值约束)。该函数必须将未投影变量作为输入,并且必须返回投影变量(必须具有相同的形状)。进行异步分布式训练时,使用约束并不安全。
bias_constraint 函数指针可选的投影函数,在由 更新后应用于偏差Optimizer

输入形状

形状为batch_shape + (channels, rows, cols)if 的 4+D 张量data_format='channels_first' 或 形状为batch_shape + (rows, cols, channels)if 的 4+D 张量data_format='channels_last'

输出形状

形状为batch_shape + (filters, new_rows, new_cols)if 的 4+D 张量data_format='channels_first'或 形状为batch_shape + (new_rows, new_cols, filters)

if的 4+D 张量data_format='channels_last'。 rows 并且cols值可能由于填充而发生变化。

返回

表示 的 4D 张量activation(conv2d(inputs, kernel) + bias)

提高

  • ValueError:当strides > 1和 都存在时dilation_rate > 1

三、参考示例

3.1 验证输入和输出

>>> # The inputs are 28x28 RGB images with `channels_last` and the batch
>>> # size is 4.
>>> input_shape = (4, 28, 28, 3)
>>> x = tf.random.normal(input_shape)
>>> y = tf.keras.layers.Conv2D(
... 2, 3, activation='relu', input_shape=input_shape[1:])(x)
>>> print(y.shape)
(4, 26, 26, 2)

 3.2 验证膨胀卷积

>>> # With `dilation_rate` as 2.
>>> input_shape = (4, 28, 28, 3)
>>> x = tf.random.normal(input_shape)
>>> y = tf.keras.layers.Conv2D(
...     2, 3,
...     activation='relu',
...     dilation_rate=2,
...     input_shape=input_shape[1:])(x)
>>> print(y.shape)
(4, 24, 24, 2)

  3.3 验证卷积前填充

>>> # With `padding` as "same".
>>> input_shape = (4, 28, 28, 3)
>>> x = tf.random.normal(input_shape)
>>> y = tf.keras.layers.Conv2D(
... 2, 3, activation='relu', padding="same", input_shape=input_shape[1:])(x)
>>> print(y.shape)
(4, 28, 28, 2)

   3.4 验证将batch-size扩展成张量维度

>>> # With extended batch shape [4, 7]:
>>> input_shape = (4, 7, 28, 28, 3)
>>> x = tf.random.normal(input_shape)
>>> y = tf.keras.layers.Conv2D(
... 2, 3, activation='relu', input_shape=input_shape[2:])(x)
>>> print(y.shape)
(4, 7, 26, 26, 2)

四、实现一个深度网络

4.1 代码和项目介绍

        我们搭建简单网络,该网络能跑起来,但并不保证有多么有效,相反,我们要逐步改进其弱点,实现更高效能。

4.2 数据集导入

导入cifar10数据集,以下两步完成:

from tensorflow.keras.datasets import cifar10

# Load the CIFAR-10 dataset
(x_train, y_train), (x_test, y_test) = cifar10.load_data()

4.3 项目设计 

        网络结构预先设计好,比如,下图详细描述了一个图片输入,卷积-连接层的分类神经网络,以及实现步骤。详细代码见下端。

 

4.4 模型实现

  • 模型实现是通过管道完成:model = Sequential( [ list ] )
  • 模型生成后需要编译,编译过后执行速度提升。model.compile。此处定义代价函数。
  • 训练定义和执行。model.fit 训练。

4.5 代码实现

# Image Classification with Convolutional Neural Networks (CNN)
import tensorflow as tf
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

# Load the CIFAR-10 dataset
(x_train, y_train), (x_test, y_test) = cifar10.load_data()

# Preprocess the data
x_train, x_test = x_train / 255.0, x_test / 255.0

# Build a CNN model
model = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),
    MaxPooling2D((2, 2)),
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D((2, 2)),
    Conv2D(64, (3, 3), activation='relu'),
    Flatten(),
    Dense(64, activation='relu'),
    Dense(10)
])

# Compile the model
model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])

# Train the model
model.fit(x_train, y_train, epochs=20, validation_data=(x_test, y_test))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1258006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

哈希表、哈希冲突解决办法

文章目录 一、什么是哈希表?二、什么是哈希冲突?怎样解决?三、哈希表的大小为什么是质数?四、链表法五、开放地址法线性探测法平方探测法双哈希(Double Hashing) 六、哈希表满了怎么办?七、完美哈希八、一些使用哈希解…

PGP 遇上比特币

重复使用 PGP 密钥作为比特币密钥 介绍 在数字安全领域,密码学在确保数据的完整性和真实性方面发挥着至关重要的作用。 一种广泛使用的加密技术是使用 Pretty Good Privacy (PGP1)。 PGP 为安全通信(例如电子邮件、文件传输和数据存储)提供加…

4G执法记录仪在高铁、地铁、机场应急处突中的应用

4G执法记录仪:高铁、地铁、机场紧急应对新利器 随着时代的迅猛发展,公共交通安全管理面临着越来越复杂的挑战。其中,高铁、地铁、机场这类人流密集的区域,要求高效、准确的应急响应与指挥调度机制。在这种背景下,4G/5G执法记录仪…

大数据平台/大数据技术与原理-实验报告--MapReduce编程

实验名称 MapReduce编程 实验性质 (必修、选修) 必修 实验类型(验证、设计、创新、综合) 综合 实验课时 2 实验日期 2023.10.30-2023.11.03 实验仪器设备以及实验软硬件要求 专业实验室(配有centos7.5系统…

burpsuite issue definitions

https://portswigger.net/burp/documentation/scanner/vulnerabilities-list 先从高危的开始学(四十能学剑,时人无此心): os command injection todo 未完待续

element 的 Notification 通知,自定义内容

通知事件: // 商户后台通知 MerchantBackgroundNotice() {// 禁止消息通知弹出多条if(this.notifyInstance) {this.notifyInstance.close();}const h this.$createElement; // 创建文本节点this.notifyInstance this.$notify({showClose: false, // 禁止关闭按钮…

Python语言学习笔记之三(字符编码)

本课程对于有其它语言基础的开发人员可以参考和学习,同时也是记录下来,为个人学习使用,文档中有此不当之处,请谅解。 什么是字符编码 计算机从本质上来说只认识二进制中的0和1,字符编码(Character Encoding) 是一种将…

Java(八)(可变参数,Collections,小案例:斗地主游戏小案例:斗地主游戏,Map集合,Stream流)

目录 可变参数 Collections 小案例:斗地主游戏 Map集合 Map的常用方法 map集合的遍历 键找值 键值对 Lambda 表达式 HashMap底层原理 集合的嵌套 Stream流 获取集合或数组的Stream流 Stream流的方法 可变参数 就是一种特殊的形参,定义在方法和构造器的形参列表中,…

视频没有字幕怎么办,怎么给视频增加字幕

文章目录 视频没有字幕怎么办,怎么给视频增加字幕前言软件准备制作字幕1. 导入视频2. 将视频拖拽到轨道3. 生成字幕4. 导出字幕 字幕实时翻译1. 播放视频2. 显示字幕设置3. 双语字幕显示 总结 视频没有字幕怎么办,怎么给视频增加字幕 前言 有时候下载的…

传音荣获2023首届全国人工智能应用场景创新挑战赛“智能家居专项赛”三等奖

近日,中国人工智能学会与科技部新一代人工智能发展研究中心联合举办2023首届全国人工智能应用场景创新挑战赛(2023 1st China’s Innovation Challenge on Artificial Intelligence Application Scene,以下简称CICAS 2023),吸引了…

10 个例子带你学会 AI 编程(含提示词)

大家好,我是伍六七。 AI 编程是一个程序员群体普遍关注的领域,但是真的使用 AI 编程实现提效的还是少数。 有的人没有大模型资源,有的人不知道可以在哪些方面使用 AI 进行提效,还有的人不相信使用 AI 可以提效。 今天&#xff…

国产Ai大模型和chtgpt3.5的比较

下面是针对国产大模型,腾讯混元,百度文心一言,阿里通义千问和chatgpt的比较,最基础的对一篇文章的单词书进行统计,只有文心一言和chatgpt回答差不多,阿里和腾讯差太多了

【机器学习】迁移学习

迁移学习:给定一个有标记的源域和一个无标记的目标域。这两个领域的数据分布不同。迁移学习的目的就是要借助源域的知识,来学习目标域的知识(标签)。或是指基于源域数据和目标域数据、源任务和目标任务之间的相似性,利用在源领域中学习到的知…

【视觉SLAM十四讲学习笔记】第三讲——旋转向量和欧拉角

专栏系列文章如下: 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵 【视觉SLAM十四讲学习笔记】第三讲——Eigen库 本章将介绍视觉SLAM的基本问题之一:如何…

【开源】基于JAVA的天然气工程运维系统

项目编号: S 022 ,文末获取源码。 \color{red}{项目编号:S022,文末获取源码。} 项目编号:S022,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程…

Win11修改用户名(超详细图文)

新买的电脑一般预装Windows11系统(家庭与学生版),新电脑初次开机使用微软邮箱账号登录,则系统将用户名自动设置成邮箱前5位字符。我的用户名便是一串数字【231xx】(qq邮箱前5位),看着很不舒服&a…

Docker搭建个人网盘NextCloud并接入雨云对象存储的教程

雨云服务器使用Docker搭建私有云盘NextCloud并接入雨云对象存储ROS的教程。 NextCloud简介 NextCloud由原ownCloud联合创始人Frank Karlitschek创建的,继承原ownCloud的核心技术又有不少的创新。在功能上NextCloud和ownCloud差不多,甚至还要丰富一些&a…

C语言:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数

分析: 在主函数 main 中,程序首先定义一个字符变量 c,以及四个整型变量 letters、k、s 和 o,并初始化它们的值为 0。然后使用 printf 函数输出提示信息,让用户输入一行字符。 接下来,程序通过 while 循环结…

编程难点:常见问题及解决方案

目录 1 前言2 学习成本高2.1 学习成本高的问题2.2 学习成本高的解决方法 3 程序bug多3.1 程序bug多的问题 4 程序的性能调试4.1 程序的性能问题4.1 程序的性能调试方法 5 跨平台兼容性差5.1 跨平台兼容问题5.1 跨平台兼容问题的解决方法 6 解决技术难题的方法总结7 总结 1 前言…

pikachu靶场:php反序列化漏洞

pikachu靶场:php反序列化漏洞 文章目录 pikachu靶场:php反序列化漏洞代码审计漏洞利用 代码审计 像这种反序列化的代码基本都是代码审计出的 // 定义一个名为S的类,该类有一个属性$test和一个构造函数 class S{ var $test "pikachu"; // $test是一个…