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

一、说明

        卷积,池化,激活函数,这三者号称是深度神经网络的三驾马车;其中卷积是最复杂的一个,因此,对卷积这个东西需要精心认知,这样对后面学习大有帮助。本篇为系列博文,专门介绍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))

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

亮相史上规模最大高交会,Coremail展现邮件技术创新实力

11月19日,第二十五届中国国际高新技术成果交易会在深圳落下帷幕,作为国内邮件行业引领者,Coremail受邀参展。 展览现场,Coremail邮件解决方案及系列产品受到了众多参观者与业内人士的关注与好评。Coremail XT6邮件系统技术成熟&a…

Arcgis根据样本点的shp文件创建一定范围的圆

导入样本点和数据 在ArcToolbox中,找到 "Analysis Tools" -> "Proximity" -> "Buffer" 工具。("分析工具" -> "邻近性" -> "缓冲区" ) 导入样本点shp文件&#xff…

智能优化算法应用:基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.教与学算法4.实验参数设定5.算法结果6.参考文献7.…

8 款强大工具适合 Python 入门的你

Python是一种开源的编程语言,可用于Web编程、数据科学、人工智能以及许多科学应用。学习Python可以让程序员专注于解决问题,而不是语法。由于Python相对较小,且拥有各式各样的工具,因此比Java和C等语言更具优势,同时丰…

技术必备:接口自动化测试数据校验神器【JSonPath】

我们今天不讲如何开发一款自定义开发校验规则库,而是给大家分享一款在开发自定义校验规则库或者常规的接口自动化测试时,经常会用到的一款数据提取神器:JSonPath。 1. JSonPath介绍 JSonPath是一种简单的方法来提取给定JSON文档的部分内容。…

全网最全卡方检验汇总

一文整理了卡方检验全部内容,包括卡方检验的定义(基本思想、卡方值计算、适用条件分析)、卡方检验分类(2*2四格表卡方、R*C表格卡方、配对卡方、卡方拟合优度检验、分层卡方)、卡方检验如何分析(数据格式、…

银行合规知识竞赛要怎么策划才高大上

合规是银行业务永恒的主题,也是银行发展的根本保障。加强合规知识的学习和理解是保障银行业务健康发展的基础。通过竞赛形式的开展,旨在增强员工对风险和合规的敏感度和关注度,推动全行合规水平全面提升。那么如何策划一场高水平的银行合规知…

尤鲁都斯巴格镇社工站开展“我的牙齿我爱护”儿童公益活动

为了提高儿童的口腔健康意识,尤鲁都斯巴格镇社工站于2023年11月20日在尤鲁都斯巴格镇第一小学开展了一场《我的牙齿我爱护》儿童公益活动。本次活动主要针对小学阶段的儿童,旨在通过口腔健康宣讲等形式,普及口腔保健知识,引导孩子…

鸿蒙原生应用/元服务开发-AGC分发如何生成密钥和和证书请求文件

HarmonyOS通过数字证书(.cer文件)和Profile文件(.p7b文件)等签名信息来保证应用的完整性,应用如需上架到华为应用市场必须通过签名校验。因此,开发者需要使用发布证书和Profile文件对应用进行签名后才能发布…

C语言:编程实现1!+2!+3!+4!+……+n!

分析&#xff1a; #include<stdio.h>//这是一个预处理指令&#xff0c;将stdio.h头文件包含到程序中&#xff0c;以便使用输入输出函数。 int main()//这是程序的主函数&#xff0c;是程序执行的入口点。 int i, a 1, t 0, n;//定义了整型变量i、a、t和n。其中&#x…

C/C++ 发送与接收HTTP/S请求

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是一种用于传输超文本的协议。它是一种无状态的、应用层的协议&#xff0c;用于在计算机之间传输超文本文档&#xff0c;通常在 Web 浏览器和 Web 服务器之间进行数据通信。HTTP 是由互联网工程任务组&#xff08;IETF…

邮件群发:避免垃圾邮箱,提升营销效果

群发邮件为什么会进入垃圾邮箱呢&#xff1f;常见的原因有&#xff1a;邮件内容出现问题、域名和IP的信誉度不高、退订数或投诉过多等原因。所以&#xff0c;营销人员在做EDM的时候&#xff0c;应该把握方式技巧&#xff0c;才能获取良好的营销效果&#xff0c;避免邮件成为垃圾…

工具 | docker删除不使用的容器

工具 | docker删除不使用的容器 Docker 清理命令

java.sql.SQLException: No suitable driver 问题解决

问题出现 自己在写一个连接C3P0数据库连接池库的测试类&#xff0c;运行该类后出现了下图这个问题 这是我写的测试类 package demo;import com.mchange.v2.c3p0.ComboPooledDataSource;import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLExcept…

【密码学引论】密码学的基本概念

第二章 密码学的基本概念 1、密码学定义 密码编制学和密码分析学共同组成密码学 密码编制学&#xff1a;研究密码编制密码分析学&#xff1a;研究密码破译 2、密码体制的五个组成部分 明文空间M&#xff0c;全体明文的集合密文空间C&#xff0c;全体密文的集合密钥空间K&am…

【Linux系统编程】进程概念详解(什么是进程?如何查看进程?)

目录 一、前言 二、 什么是进程&#xff1f; &#x1f4a6;引出进程 &#x1f4a6;进程的基本概念 &#x1f4a6;理解进程 ⭐描述进程--PCB&#xff08;进程控制块&#xff09; ⭐组织进程 三、查看进程 &#x1f4a6; 通过 ps 命令查看进程 &#x1f4a6; 通过 l…

怎么判断香港服务器的性能好不好?

随着互联网的不断发展&#xff0c;越来越多的人开始使用香港服务器来搭建自己的网站或者应用。但是&#xff0c;对于初次使用香港服务器的用户来说&#xff0c;往往会遇到一个问题&#xff1a;怎么判断香港服务器的性能好不好? 首先我们需要了解香港服务器的性能主要取决于哪些…

今日 LeetCode热题100--c++代码附思路

目录 1.最长连续序列 题目描述​编辑 通过代码 2.移动零 题目描述 通过代码 3.盛最多水的容器 题目描述 通过代码 1.最长连续序列 题目描述 通过代码 class Solution { public:int longestConsecutive(vector<int>& nums) {//排序&#xff0c;相同字母跳过…

TiDB 7.x 源码编译之 TiDB Server 篇,及新特性详解

本文将介绍如何编译 TiDB Server 源码。以及阐释 TiDB Server 7.x 的部分新特性。 TiDB v7.5.0 LTS 计划于 2023 年 11 月正式 Release&#xff0c;目前代码虽未冻结&#xff0c;但已经可以看到 Alpha 版本的 Code 了&#xff0c;本文代码将以 v7.5.0-alpha 为基准。 TiDB Se…

16、定时器

定时器介绍 定时器介绍&#xff1a;51单片机的定时器属于单片机的内部资源&#xff0c;其电路的连接和运转均在单片机内部完成 定时器的作用&#xff1a; 1、用于计时系统&#xff0c;可实现软件计时&#xff0c;或者使程序每隔一固定时间完成一项操作 2、替代长时间的Delay,提…