当前位置: 首页 > news >正文

【5-卷积神经网络】北京大学TensorFlow2.0

课程地址:【北京大学】Tensorflow2.0_哔哩哔哩_bilibili

Python3.7和TensorFlow2.1

六讲:

  1. 神经网络计算:神经网络的计算过程,搭建第一个神经网络模型

  1. 神经网络优化:神经网络的优化方法,掌握学习率、激活函数、损失函数和正则化的使用,用Python语言写出SGD、Momentum、Adagrad、RMSProp、Adam五种反向传播优化器

  1. 神经网络八股:神经网络搭建八股,六步法写出手写数字识别训练模型

  1. 网络八股扩展:神经网络八股扩展,增加自制数据集、数据增强、断点续训、参数提取和acc/loss可视化,实现给图识物的应用程序

  1. 卷积神经网络:用基础CNN、LeNet、AlexNet、VGGNet、InceptionNet和ResNet实现图像识别

  1. 循环神经网络:用基础RNN、LSTM、GRU实现股票预测


前两讲:使用六步法搭建了全连接网络,训练了MNIST数据集和FASHION数据集,实现了图像识别应用

本讲:讲解卷积神经网络,利用基础CNN、LeNet、AlexNet、VGGNet、InceptionNet和ResNet实现图像识别


全连接网络回顾

全连接网络中的每一个神经元小球与前后相邻层的每一个神经元都有连接关系,输入是特征,输出是预测结果。实践证明,全连接网络对识别和预测都有非常好的效果

上一讲中输入全连接网络的是一幅28行28列的784个像素点的灰度值图片,仅两层全连接网络就有十万多个待训练参数

全连接网络的参数量

在实际项目中,输入神经网络的是具有更高分辨率的彩色图片,使得送入全连接网络的输入特征数过多。随着隐藏层层数增加,网络规模过大,待优化参数过多,很容易使模型过拟合


卷积神经网络

卷积计算过程

为了减少待训练参数,在实际应用时,会先对原始图片进行特征提取,把提取出来的特征送给全连接网络,让全连接网络输出识别结果比如一幅彩色图片进入神经网络时,会先对它进行若干层特征提取,把提取到的特征送入全连接网络进行识别

全连接网络的改进

卷积计算是一种有效提取图像特征的方法。一般会用一个正方形的卷积核,按指定步长,在输入特征图上滑动,遍历这张输入特征图里的每个像素点,每滑动一个步长,卷积核会与输入特征图部分像素点重合,重合区域对应元素相乘求和,再加上偏置项,得到输出特征图的一个像素点

  • 如果输入特征是单通道灰度图,使用深度为1的单通道卷积核

  • 如果输入特征是三通道彩色图,使用一个3*3*3或5*5*3的卷积核,总之要使卷积核的通道数与输入特征图的通道数一致。因为要想让卷积核与输入特征图对应点匹配上,必须让卷积核的深度与输入特征图的深度一致,所以输入特征图的深度(channel数)决定了当前层卷积核的深度

由于每个卷积核在卷积计算后,会得到一张输出特征图,所以当前层使用了几个卷积核,就有几张输出特征图,即当前层卷积核的个数决定了当前层输出特征图的深度

如果觉得某层模型的特征提取能力不足,可以在这一层多用几个卷积核,提高这一层的特征提取能力

里面的每一个小颗粒都存储着一个待训练参数。在执行卷积计算时,卷积核里的这些参数是固定的,每次反向传播时,这些小颗粒中存储的待训练参数会被梯度下降法更新。卷积就是利用立体卷积核,实现了参数的空间共享

对于输入特征图是单通道的,选择单通道卷积核:

对于输入特征图是三通道的,选择三通道卷积核:

每滑动一步,输入特征图与卷积核里的27个元素重合,它们对应元素相乘求和再加上偏置项b,得到输出特征图中的一个像素值

用多个卷积核可实现对同一层输入特征的多次特征提取,卷积核的个数决定输出层的通道数(channels),即输出特征图的深度

卷积核在输入特征图上按指定步长滑动,每个步长,卷积核会与输入特征图上部分像素点重合,重合区域输入特征图与卷积核对应元素相乘求和,得到输出特征图中的一个像素点。当输入特征图被遍历完成,得到一张输出特征图,完成了一个卷积核的卷积计算过程;当有n个卷积核时,会有n张输出特征图,叠加在一起

Convolutional Neural Networks - Basics

感受野(Receptive Field)

输出特征图中一个像素点映射到原始输入图片的区域大小

同样一个5*5的原始输入图片,经过两层3*3卷积核作用,和经过一层5*5卷积核作用一样,都得到一个感受野是5的输出特征图

两层3*3卷积核和一层5*5卷积核的特征提取能力是一样的,选择哪种好? —— 要考虑它们所承载的待训练参数量和计算量

图片大小是x*x,卷积核为3*3,每计算出一个像素点需要9次乘加计算(卷积核大小为9)

  • x*x经过第一次卷积计算后得到的图片大小为(x-2)*(x-2),故第一次卷积的乘加计算个数为(x-2)*(x-2)*9

  • 同理,(x-2)*(x-2)经过第二次卷积计算得到的图片大小为(x-4)*(x-4),故第二次卷积的乘加计算个数为(x-4)*(x-4)*9

  • 所以计算量为(x-2)*(x-2)*9+(x-4)*(x-4)*9

图片大小是x*x,卷积核为5*5,每计算出一个像素点需要25次乘加计算(卷积核大小为25)

  • x*x经过第一次卷积计算后得到的图片大小为(x-4)*(x-4),故第一次卷积的乘加计算个数为(x-4)*(x-4)*25

  • 所以计算量为(x-4)*(x-4)*25

当采用尺寸不同的卷积核时,最大的区别就是感受野的大小不同,所以经常会采用多层小卷积核来替换一层大卷积核,在保持感受野相同的情况下减少参数量和计算量,例如十分常见的用2层3*3卷积核来替换1层5*5卷积核的方法

全零填充(Padding)

希望卷积计算保持输入特征图尺寸不变,可以使用全零填充,在输入特征图周围填充0

5*5*1的输入特征图经过全零填充后,再通过3*3*1的卷积核,进行步长为1的卷积计算,输出特征图仍是5*5*1,如图:

全零填充的输出特征尺寸计算

卷积输出特征图维度的计算公式:

对于5*5*1的图像来说,当padding='SAME'时,输出图像边长为5;当padding='VALID'时,输出图像边长为3


TensorFlow2描述卷积计算层

在TensorFlow框架下利用Keras来构建CNN中的卷积层,使用的是tf.keras.layers.Conv2D函数

tf.keras.layers.Conv2D (input_shape = (高, 宽, 通道数)   # 输入特征图维度,仅在第一层有,可省略filters = 卷积核个数,   # 整数kernel_size = 卷积核尺寸,   # 正方形写核长整数,或(核高h,核宽w)strides = 滑动步长,   # 横纵向相同写步长整数(通常是相同的),或(纵向步长h,横向步长w),默认1padding = “same” or “valid”,   # 使用全零填充是“same”,不使用是“valid”(默认)activation = “ relu ” or “ sigmoid ” or “ tanh ” or “ softmax”等 ,  # 如果这一层卷积后还有批标准化BN操作,不在这里进行激活,不写激活函数
)

在利用TensorFlow框架构建卷积网络时,一般会利用Batch Normalization函数构建BN层进行批标准化,所以在Conv2D函数中经常不写激活函数

# 采用6个5*5的卷积核,不使用全零填充,激活函数用sigmoid# 写法1
Conv2D(6, 5, padding='valid', activation='sigmoid')# 写法2
Conv2D(6, (5,5), padding='valid', activation='sigmoid')# 写法3(推荐关键字传递参数的方法,代码可读性强)
Conv2D(filters=6, kernel_size=(5,5), padding='valid', activation='sigmoid')

卷积神经网络中的操作

卷积神经网络就是借助卷积核对输入特征进行特征提取,再把提取到的特征送入全连接网络进行识别预测

提取特征包括卷积、批标准化、激活、池化四步

批标准化(Batch Normalization,BN)

神经网络对0附近的数据更敏感,但是随着网络层数的增加,特征数据会出现偏离0均值的情况。标准化可以使数据符合以0为均值,1为标准差的标准正态分布,把偏移的特征数据重新拉回到0附近

批标准化,是对一个batch的数据在网络各层的输出做标准化处理,使数据回归标准正态分布常用在卷积操作和激活操作之间(BN层位于卷积层之后,激活层之前)

可以通过下面这个式子计算批标准化后的输出特征图:

批标准化操作,会让每个像素点进行减均值除以标准差的自更新计算。注意,是对第k个卷积核产生的batch张输出特征图集体求均值和标准差

BN操作将原本偏移的特征数据重新拉回到0均值,使进入激活函数的数据分布在激活函数的线性区,使得输入数据的微小变化更明显地体现到激活函数的输出,提升了激活函数对输入数据的区分力

BN将神经网络每层的输入都调整到均值为0,方差为1的标准正态分布,其目的是解决神经网络中的梯度消失问题

但是这种简单的特征数据标准化使特征数据完全满足标准正态分布,集中在激活函数中心的线性区域,使激活函数丧失了非线性特性。BN操作的另一个重要步骤是缩放和偏移,在BN操作中为每个卷积核引入两个可训练参数:缩放因子γ和偏移因子β,反向传播时,两个因子会与其他待训练参数一同被训练优化,使标准正态分布后的特征数据通过缩放因子和偏移因子优化了特征数据分布的宽窄和偏移量,保证了网络的非线性表达力

TensorFlow提供了BN操作的函数:tf.keras.layers.BatchNormalization()

池化(Pooling)

池化操作用于减少卷积神经网络中特征数量(降维),主要方法有最大池化和均值池化

  1. 最大池化(MaxPool2D):可以提取图片纹理

  1. 均值池化(AveragePooling2D):可以保留背景特征

TensorFlow给出了池化函数:tf.keras.layers.MaxPool2Dtf.keras.layers.AveragePooling2D。以MaxPool2D为例说明参数,AveragePooling2D同理:

tf.keras.layers.MaxPool2D(pool_size=池化核尺寸,  #正方形写核长整数,或(核高h,核宽w),一般池化核的高和宽是一样的strides=池化步长,  #步长整数, 或(纵向步长h,横向步长w),默认为pool_sizepadding=‘valid’or‘same’   #使用全零填充是“same”,不使用是“valid”(默认)
)# 写法1
MaxPool2D(2, 2)
# 写法2
MaxPool2D(2, (2,2))
# 写法3(推荐关键字传递参数的方法,代码可读性强)
MaxPool2D(strides=2, pool_size=(2,2))

舍弃(Dropout)

为了缓解神经网络过拟合,在神经网络训练过程中,常把隐藏层的部分神经元按照一定比例从神经网络中临时舍弃;在使用神经网络时,再把所有神经元恢复到神经网络中

TensorFlow提供了Dropout的函数:tf.keras.layers.Dropout(舍弃的概率)

总结

利用上述知识,就可以构建出基本的卷积神经网络CNN了,其核心思路为:在CNN中利用卷积核(kernel)提取特征后,送入全连接网络

CNN模型的主要模块:一般包括卷积层、BN层、激活函数、池化层以及全连接层

model = tf.keras.models.Sequential([Conv2D(filters=6, kernel_size=(5, 5), padding='same'), # 卷积层BatchNormalization(), # BN层Activation('relu'), # 激活层MaxPool2D(pool_size=(2, 2), strides=2, padding='same'), # 池化层Dropout(0.2), # dropout层  随机舍弃掉20%的神经元
])

卷积就是特征提取器,CBAPD

  1. C:卷积层 Conv2D()

  1. B:BN层 BatchNormalization()

  1. A:激活层 Activation()

  1. P:池化层 MaxPool2D() 或 AveragePooling2D()

  1. D:dropout层 Dropout()


卷积神经网络搭建示例

构建神经网络的八股套路:

  1. import引入TensorFlow、Keras、numpy等所需模块

  1. 读取数据集

  1. 像MNIST、CIFAR10等基础数据集可以直接从sklearn等模块中引入

  1. 实际应用中,大多需要从图片和标签文件中读取所需数据集

  1. 搭建所需的网络结构

  1. 当网络结构比较简单时,可以利用Keras模块中的tf.keras.models.Sequential来搭建顺序网络模型(更方便)

  1. 当网络不再是简单的顺序结构,而是有其它特殊结构出现(如ResNet中的跳连结构),便需要利用class定义自己的网络结构(实际应用中往往使用这种)

  1. 对搭建好的网络进行编译(compile)。通常在这一步指定所采用的优化器(如Adam、sgd、RMSProp等)、损失函数(如交叉熵函数、均方差函数等)。注意,选择哪种优化器和损失函数往往对训练的速度和效果有很大的影响

  1. 将数据输入编译好的网络来进行训练(model.fit)。在这一步中指定训练轮数epochs、batch_size等信息。由于神经网络的参数量和计算量一般都比较大,训练所需的时间也比较长,尤其是在硬件条件受限的情况下,所以在这一步中通常会加入断点续训、模型参数保存等功能,使训练更加方便,同时防止程序意外停止导致数据丢失的情况发生

  1. 将神经网络模型的具体信息打印出来(model.summary),包括网络结构、网络各层的参数等,便于对网络进行浏览和检查

相关文章:

unity想让方法带一个默认参数怎么写

在C#中,包括Unity使用的C#版本,你可以为方法参数提供默认值。这允许你在调用方法时省略某些参数,并使用这些参数的默认值。以下是如何为一个方法参数设置默认值的示例: using UnityEngine; public class MyClass : MonoBehaviou…...

C++ 指针动态内存分配

动态内存分配动态内存分配:即由程序员手动的进行内存空间的分配、内存空间的释放的内存管理操作 C++代码中,变量、数组等对象的创建,是由C++自动分配内存的,称之为(自动)静态内存分配(自动)静态内存管理,不会进行内存空间的自动清理。(无垃圾回收机制) 需要手动的管…...

cms标准GB15084

...

【gin】【swag】

@目录写在前面gin swagger安装依赖添加注释生成 api 文件路由设置访问源码分析gin-swagger参考资料基础/标准库/第三方库golang 导航编程规范算法|面试项目写在前面相关博文 个人博客首页 免责声明:仅供学习交流使用!开源框架可能存在的风险和相关后果将完全由用户自行承担,…...

新版宝塔加密数据解密

宝塔更新了数据存储的方式,PanelForensics会尽快支持最近啊,fic中出现了宝塔,结果PanelForensics居然没有梭哈,这怎么行?? 于是我就一通分析,发现这个版本更新了架构,并且对密码的加解密是通过调用二进制依赖进行实现的 我这里就以mysql的密码为例,在新版本中,mysql的…...

邦芒忠告:人到中年在职场上千万不能做这3种事情

人在职场上的闯荡基本上只有两个时期,一个是青年时期,一个是中年时期。 ​青年时期,我们敢打敢拼,敢于一次一次尝试失败。虽然青年时期我们的阅历并不丰富,但是学习能力很强,还充斥着一股职场新人的工作热情…...

【5-卷积神经网络】北京大学TensorFlow2.0

课程地址:【北京大学】Tensorflow2.0_哔哩哔哩_bilibiliPython3.7和TensorFlow2.1六讲:神经网络计算:神经网络的计算过程,搭建第一个神经网络模型神经网络优化:神经网络的优化方法,掌握学习率、激活函数、损…...

C++初阶:vector类

文章目录1 vector介绍2 实现vector2.1 类的定义2.2 默认成员函数2.2.1 构造函数2.2.2 析构函数2.2.3 拷贝构造2.2.4 赋值重载2.3访问接口2.4 容量接口2.5 修改接口2.5.1 尾插尾删2.5.2 任意位置插入2.5.3 任意位置删除2.6 其他接口1 vector介绍 1 vector是表示可变大小数组的序…...

机器学习中软投票和硬投票的不同含义和理解

设置一个场景,比如对于今天音乐会韩红会出现的概率三个人三个观点 A:韩红出现的概率为47% B:韩红出现的概率为57% C:韩红出现的概率为97% 软投票:软投票会认为韩红出现的概率为1/3*(47%57%97%)67% 硬投票:…...

Linux系统之网络客户端工具

Linux系统之网络客户端工具一、Links工具1.Links工具介绍2.安装Links软件3.Links工具的使用4.打印网页源码输出5.打印url版本到标准格式输出二、wget工具1.wget工具介绍2.安装wget软件3.wget工具的使用三、curl工具1.curl工具的介绍2.curl的常用参数3.curl的基本使用四、scp工具…...

c++函数(2)

这里写自定义目录标题默认参数函数重载递归函数变量周期默认参数 可为形参指定默认值,如果在函数调用时,没有指定与形参对应的实参时,就自动使用默认值。 默认参数可简化复杂函数的调用。 默认参数在函数名第一次出现在程序中指定&#xff0…...

HackTheBox Stocker API滥用,CVE-2020-24815获取用户shell,目录遍历提权

靶机地址: https://app.hackthebox.com/machines/Stocker枚举 使用nmap枚举靶机 nmap -sC -sV 10.10.11.196机子开放了22,80端口,我们本地解析一下这个域名 echo "10.10.11.196 stocker.htb" >> /etc/hosts 去浏览器访问…...

Java线程池应用实例

线程池的学习基本概念好处应用场景ThreadPoolExecutor实例理解:执行流程自定义线程池4大核心参数测试demo结论:ExecutorService常用方法思考获取ExecutorService代码示例ScheduleExecutorService常用获取方式如下ScheduledExecutorService常用方法如下:代…...

数字签名技术

介绍数字签名 数字签名是一种用于确认数据的完整性、确认发送者身份的技术。 签名主要包含两个过程:做摘要、进行非对称加密。 做摘要:签名者使用消息摘要算法对消息做摘要;进行非对称加密,得到签名值:签名者使用私…...

WPF-3D图形

WPF-3D图形 WPF的3D功能可以在不编写任何c#代码的情况下进行绘制,只需要使用xaml即可完成3D图形的渲染。本文主要讲述了WPF-3D中的关键概念, 以及常用到的命中测试、2d控件如何在3D对象中进行渲染,除此之外,还演示了如何导入外部…...

返回值的理解

前言 我们写的函数是怎么返回的,该如何返回一个临时变量,临时变量不是出栈就销毁了吗,为什么可以传递给调用方?返回对象的大小对使用的方式有影响吗?本文将带你探究这些问题,阅读本文需要对函数栈帧有一定…...

前端布局神器display:flex

Flexbox,一种CSS3的布局模式,也叫做弹性盒子模型,用来为盒装模型提供最大的灵活性。首先举一个栗子,之前我们是这样实现一个div盒子水平垂直居中的。在知道对象高宽的情况下,对居中元素绝对百分比定位,然后…...

【Typescript学习】使用 React 和 TypeScript 构建web应用(三)所有组件

教程来自freecodeCamp:【英字】使用 React 和 TypeScript 构建应用程序 跟做,仅记录用 其他资料:https://www.freecodecamp.org/chinese/news/learn-typescript-beginners-guide/ 第三天 以下是视频(0:40-0:60) 的内容 目录第三天1 创建Todo…...

7.3 矩阵范数

定义 向量有范数,矩阵也有范数,定义和向量范数类似,不过多了一条要求。它的定义如下: 正定性positivity,∥A∥≥0\parallel A\parallel\ge 0∥A∥≥0,只有A0A0A0时才取等号;非负齐次性homogeneity或scalin…...

Jetpack架构组件库:Hilt

Hilt Hilt 是基于 Dagger2 的依赖注入框架,Google团队将其专门为Android开发打造了一种纯注解的使用方式,相比 Dagger2 而言使用起来更加简单。 依赖注入框架的主要作用就是控制反转(IOC, Inversion of Control), 那么什么是控制…...

InstanceNorm LayerNorm

InstanceNorm && LayerNorm author: SUFEHeisenberg date: 2023/01/26 先说结论: 将Transformer类比于RNN:一个token就是一层layer,对一整句不如token有意义原生Bert代码或huggingface中用的都是InstanceNorm instead of LayerNorm&#xff…...

数据结构---堆

堆 定义 基本操作 建堆 堆排序 优先队列 一、堆的定义: 堆必须是一个完全二叉树 还得满足堆序性 什么是完全二叉树呢? 完全二叉树只允许最后一行不为满 且最后一行必须从左到右排序 最后一行元素之间不可有间隔,中间不可有空缺 如下几棵树…...

3小时精通opencv(五) 利用TrackBar进行颜色检测

3小时精通opencv(五) 利用TrackBar进行颜色检测 参考视频资源:3h精通Opencv-Python 本章内容介绍如何利用TrackBar调节色域, 手动提取到我们需要的颜色 文章目录3小时精通opencv(五) 利用TrackBar进行颜色检测创建Trackbar色彩检测创建Trackbar 在opencv中使用createTrackbar函…...

学习记录673@项目管理之进度管理案例

本文主要是进度管理之关键链路法的案例。 案例 Perfect 项目的建设方要求必须按合同规定的期限交付系统,承建方项目经理李某决定严格执行项目进度管理,以保证项目按期完成。他决定使用关键路径法来编制项目进度网络图。在对工作分解结构进行认真分析后&…...

【设计模式】结构型模式·组合模式

学习汇总入口【23种设计模式】学习汇总(数万字讲解体系思维导图) 写作不易,如果您觉得写的不错,欢迎给博主来一波点赞、收藏~让博主更有动力吧! 一.概述 又称为部分整体模式,用于把一组相似的对象当作一个单一的对象。组合模式依…...

Vue-Router详解

1、前端路由的发展历程 1.1、认识前端路由 路由其实是网络工程中的一个术语: 在架构一个网络时,非常重要的两个设备就是路由器和交换机。当然,目前在我们生活中路由器也是越来越被大家所熟知,因为我们生活中都会用到路由器&…...

Eclipse中的Build Path

Eclipse中的Build Path简介如果修改了Build Path中的中的JRE版本,记得还需要同步修改Java编译器的版本,如下图红框所示简介 Build Path是Java工程包含的资源属性合集,用来管理和配置此Java工程中【除当前工程自身代码以外的其他资源】的引用…...

Python与Matlab混合编程案例

前言因为项目需要,需要批处理很多Matlab的.m文件,从每个文件中提取结果合并到一个文件中。 很明显,如果手工统计,几百个文件会累死的。 因此立即想到了Python在批处理方面的优势,因此就在网上找了相关资料,…...

stack、queue、priority_queue

容器适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。 其中stack和queue都是容器适配器,其中stack可以封装vector、list以及我们…...

高通平台开发系列讲解(GPS篇)gpsONE 系统架构

文章目录 一、系统架构图二、gpsONE系统组成三、gpsONE交互流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢高通的定位系统模块,名称叫gpsONE。 一、系统架构图 二、gpsONE系统组成 GPS系统架构可以分为六个部分: APP层Framework Client端(LocationManager API…...

zkMove——针对Move合约生态的zkVM

1. 引言 Move为不同于Solidity的,开源的安全的智能合约开发语言,最早由Facebook为Diem链创造开发。不过,Move本身设计为与平台无关的语言,具有通用的库、工具,并使得采用完全不同数据模型和执行模型的链的开发者社区都…...

贪心算法的题目

每一步都做出一个局部最优的选择,最终的结果就是全局最优 只有一部分问题才能用贪心算法(严格来讲,一个问题能不能用贪心算法需要证明的) 2022.8.30 蔚来笔试题: 有a个y,b个o,c个u,用这些字母拼成一个字符串&#xf…...

线程控制--Linux

文章目录线程理解线程的优点与缺点进程的多个线程共享线程控制线程创建线程终止线程等待线程分离总结线程理解 谈及线程,就不得不谈起进程与线程的关系了。学习完前面有关进程的知识,之前我们对进程的定义是:内核数据结构代码和数据。但是今…...

17 | 如何做好面试复盘?将经验提升为能力

前言 前言:面试是最好的查漏补缺机会,做好面试复盘又是十分的重要。 文章目录前言一. 关于复盘1. 什么是复盘(What)2. 复盘的目的(Why)3. 什么时候需要复盘(When)4. 怎么进行复盘&am…...

数据结构-树

1. 二叉树遍历 #include <stdbool.h> #include "stdio.h" #include "stdlib.h"typedef struct TNode *Position; typedef Position BinTree; // 二叉树类型 typedef char ElementType;// 树结点定义 struct TNode {ElementType Data; // 结点数据Bin…...

Python3 循环语句

本章节将为大家介绍 Python 循环语句的使用。 Python 中的循环语句有 for 和 while。 Python 循环语句的控制结构图如下所示&#xff1a; while 循环 Python 中 while 语句的一般形式&#xff1a; while 判断条件(condition)&#xff1a;执行语句(statements)…… 执行流程…...

时序数据处理中的拟合问题

对于深度学习或机器学习模型而言,我们不仅要求它对训练数据集有很好的拟合(训练误差),同时也希望它可以对未知数据集(测试集)有很好的拟合结果(泛化能力),所产生的测试误差被称为泛化误差。度量泛化能力的好坏,最直观的表现就是模型的过拟合(overfitting)和欠拟合(…...

[数据结构基础]排序算法第一弹 -- 直接插入排序和希尔排序

目录 一. 排序的概念及分类 1.1 排序的概念 1.2 常见的排序算法 二. 直接插入排序 2.1 直接插入排序的实现逻辑 2.2 直接插入排序的实现代码 2.3 直接插入排序的时间复杂度分析 三. 希尔排序 3.1 希尔排序的实现逻辑 3.2 希尔排序实现代码 3.3 希尔排序的效率测试 …...

厚积薄发打卡Day115:Debug设计模式<简单工厂、工厂方法、抽象工厂>

厚积薄发打卡Day115&#xff1a;Debug设计模式<简单工厂、工厂方法、抽象工厂> 简单工厂 定义 由一个工厂对象决定创建出哪一种产品类的实例&#xff08;严格意义并不是设计模式&#xff0c;更是一种风格&#xff09; 类型&#xff1a;创建型&#xff0c;但不属于GOF…...

python元组

python元组 文章目录python元组一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.创建元组2.访问元组3.修改元组4.删除元组5.索引及截取6.元组运算符7.内置函数总结一、实验目的 掌握元组的用法 二、实验原理 Python 的元组与列表类似&#xff0c;不同之处在…...

gcc中预定义的宏__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__

今天在看Linux系统编程这本书的代码的时候看到了__GNUC__&#xff0c;不太清楚这个宏所以去查了一下&#xff0c;以此记录。GNU C预定义了一系列的宏&#xff0c;这些宏都是以双下划线开始的&#xff0c;这里只讲一下__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__&#xff0c;完…...

AxMath使用教程(持续更新中)

前言 这两天学了学Latex&#xff0c;主要是为了以后写毕业论文做铺垫&#xff0c;而且Latex在数学公式这一方面&#xff0c;要比Word方便许多&#xff0c;于是我就下载了一款国产的公式编辑器——AxMath。永久会员不贵&#xff0c;只要36元&#xff0c;而且软件很好用&#xf…...

day11 栈和队列 | 20、有效的括号 1047、删除字符串中的所有相邻重复项 150、逆波兰表达式求值

题目 20、有效的括号 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串&#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序…...

【前端面试】http面试整理

"一问一答"模型的协议 客户端通过http请求&#xff1b;服务器端根据请求返回客户想要的资源&#xff1b;客户端接收到资源&#xff1b;http是什么 HTTP是超文本传输协议&#xff0c;是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约…...

倒霉倒霉倒霉(传送门 bfs 三维数组 递归 综合运用

题目描述“啊&#xff01;倒霉倒霉倒霉~”龙叔被困在一座大厦里了&#xff0c;可恶的瓦龙把这座大厦点燃了&#xff0c;他借机消灭龙叔。这座大厦有L层&#xff0c;每一层都有R*C个房间。熊熊火焰蔓延十分快&#xff0c;有的房间已经着火了&#xff0c;龙叔没办法通过。这时老爹…...

C++函数定义和调用介绍

C函数定义和调用介绍 函数的意义&#xff1a;利用率高&#xff0c;可读性强&#xff0c;利于移植。 一个C程序中主函数有且只有一个&#xff0c;是程序的入口&#xff0c;而函数&#xff08;或称子函数&#xff09;可以有很多。 每个 C 程序都至少有一个函数&#xff0c;即主…...

手把手带初学者快速入门 JAVA Web SSM 框架

博主也是刚开始学习SSM&#xff0c;为了帮大家节省时间&#xff0c;写下SSM快速入门博客 有什么不对的地方还请 私信 或者 评论区 指出 ​只是一个简单的整合项目&#xff0c;让初学者了解一下SSM的大致结构 项目先把框架写好&#xff0c;之后在填写内容 项目压缩包 完整的蓝奏…...

RocketMQ源码本地搭建调试

1 GitHub源码 git clone https://github.com/apache/rocketmq.git导入IDEA&#xff0c;可在命令行执行mvn compile一下&#xff0c;保证源码能够正确编译。本次我使用的master分支的版本-4.8.0。下面我们开始准备启动Namesrv。 2 启动Namesrv 到namesrv模块找到NamesrvStart…...

Axios 二次封装并使用

index.js import axios from "axios";let token localStorage.getItem("token"); // let token "123213"; class Request {// 自定义变量instance;constructor(config) {// console.log(config)// 创建axios 实例&#xff0c;变量接收this.in…...

【SpringCloud】Nacos集群搭建

集群结构图官方给出的Nacos集群图如下&#xff1a;其中包含3个nacos节点&#xff0c;然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。我们接下来要尝试 Nacos集群搭建&#xff0c;效果图如下所示&#xff1a;三个nacos节点的地址&#xff1a;节点ipportnacos1l…...

【CSDN的2022与2023】普普通通的三年,从懵懂、焦虑到坚定、奋进,破除焦虑努力成为更好的自己

大家好&#xff0c;我是黄小黄&#xff01;一名普通的软件工程在读学生。最近终于闲下来了一丢丢&#xff01;借着休息之余&#xff0c;来写一篇年度总结散散心~与其说是年度总结&#xff0c;不如说是给大学生活与莽莽撞撞的自己一个交代叭&#xff01; 这些都是小标题~碎碎念1…...

k8s单机版使用本地存储local-path-provisioner

在k8s单机环境中&#xff0c;我们经常使用本机路径作为持久化存储。在k8s官方文档中有两种方式使用本机存储&#xff0c;一种是hostPath&#xff0c;另一种是local volume&#xff0c;这两种都不支持动态扩容&#xff0c;并且程序移植改动比较大&#xff0c;而local-path-provi…...

MySQL优化(1)执行计划explain中type属性详解

系列文章目录1.初始化测试数据1.初始化表格&#xff08;user表&#xff09;2.初始化表格&#xff08;product表&#xff09;3.初始化表格&#xff08;user表数据初始化&#xff09;4.初始化表格&#xff08;product表函数&#xff09;5.初始化表格&#xff08;product表数据初始…...

servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别

servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别servlet过滤器1.filter过滤器的含义2.filter过滤器的使用3.测试-过滤字符编码正确响应中文编码3.1 创建servlet用于显示中文字符3.2 自定义过滤器3.3 配置web.xml中的servlet映射以及过滤器请求拦截3.4 运行输出…...

Java链表OJ题

目录1. 删除链表中等于给定值val的所有结点2. 逆置单链表3. 链表的中间结点4. 链表中倒数第k个结点5. 将两个有序链表合并为一个新的有序链表6. 以给定值x为基准将链表分割成两部分7. 判断是否为回文链表8. 两个链表的第一个公共结点9. 判断链表中是否有环10. 链表开始入环的第…...

0、Spring工程构建Spring快速入门Spring配置文件详解注入Sprint相关API

1、Spring工程构建 创建工程项目目录文件夹 IDEA选择项目new一个module 配置案例 aop创建 创建并下载完毕后&#xff0c;点击file选择projert 选择按照的jdk版本 output选择当前目录&#xff0c; 点击右下方apply 选择facets&#xff0c;点击""号选择web 选择当前…...

搜狗输入法 PC端 v14.4.0.9307 去广告绿化版.

软件介绍 搜狗拼音输入法作为众多用户计算机配置的必备工具&#xff0c;其功能的全面性已为众所周知&#xff0c;并且以其高效便捷的输入体验受到广大使用者的青睐。然而&#xff0c;该软件在提供便利的同时&#xff0c;其内置的广告元素常常为用户带来一定的干扰。为此&#…...

MM模块学习一(供应商创建,物料类型的定义及功能)

物料管理流程&#xff1a; 源头&#xff1a;采购需求->采购申请 MRP&#xff1a;物料需求计划。运行物料需求计划的结果&#xff0c;根据物料的性质来判断是外购&#xff08;采购申请&#xff09;或者是生产&#xff08;计划订单->生产订单&#xff09;。 采购申请&am…...

TiDB系列之:TiDB数据库账号权限,创建TiDB账号,创建数据库,创建表,插入数据

TiDB系列之:TiDB数据库账号权限,创建TiDB账号,创建数据库,创建表,插入数据 一、TiDB账号权限二、创建TiDB账号三、创建数据库,创建表,插入数据一、TiDB账号权限 TiDB账号权限可以分为系统级权限和对象级权限两种,具体如下: 系统级权限: ALL PRIVILEGES:拥有所有权限…...

91、动态规划-不同的路径

思路&#xff1a; 首先我们可以使用暴力递归解法&#xff0c;无非就是每次向下或者向右看看是否有解法&#xff0c;代码如下&#xff1a; public class Solution {public int uniquePaths(int m, int n) {return findPaths(0, 0, m, n);}private int findPaths(int i, int j,…...

【busybox记录】【shell指令】join

目录 内容来源&#xff1a; 【GUN】【join】指令介绍 【busybox】【join】指令介绍 【linux】【join】指令介绍 使用示例&#xff1a; 打印两个文件的共有行 - 默认输出 可以对字母排序 可以对数字排序 可以对字符串排序 打印两个文件的共有行 - 输出文件1或者文件2中…...

Day 63:单调栈 LeedCode 84.柱状图中最大的矩形

84. 柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;10 解释&a…...

矩阵:一个用于大型语言模型的贝氏学习模型

在本文中&#xff0c;作者介绍了一个贝氏学习模型来理解大型语言模型&#xff08;LLM&#xff09;的行为。他们探讨了基于预测下一个token的LLM优化指标&#xff0c;并开发了一个以此原理为基础的新颖模型。他们的方法涉及构建一个理想的生成文本模型&#xff0c;该模型由具有先…...

缓存一致性

缓存数据一致性 双写模式失效模式 都会导致缓存不一致问题。 解决方案-Canal 更新 DB 会产生的 binlog&#xff0c;Canal 订阅 binlog&#xff0c;监测到数据库的更新&#xff0c;从而更新缓存。 解决方案-分布式读写锁 适用于读多写少的情况...

上海市计算机学会竞赛平台2022年11月月赛丙组奇偶数的判定

题目描述 给定一个整数 &#x1d45b;n&#xff0c;若 &#x1d45b;n 是一个偶数&#xff0c;输出 even&#xff0c;若 &#x1d45b;n 是一个奇数&#xff0c;输出 odd。 输入格式 单个整数&#xff1a;表示 &#x1d45b;n。 输出格式 单个字符串&#xff1a;表示 &…...

打破次元壁!Stable Diffusion将现实影像转成二次元动画,推特转赞10k+,网友:都可以重做《神奇宝贝》动漫了

破次元壁计划已启动&#xff01; 就在最近&#xff0c;有网友分享了一个用Stable Diffusion打造二次元动画的工具&#xff0c;直接在网上爆火。 先快来看一波效果。 万物皆可妙化为二次元&#xff0c;耳机也可蜕变成小兔兔&#xff1a; 瞧&#xff01;连易拉罐的拉环也化身成…...

rust容器、迭代器

目录 一&#xff0c;std容器 1&#xff0c;Vec&#xff08;向量、栈&#xff09; 2&#xff0c;VecDeque&#xff08;队列、双端队列&#xff09; 3&#xff0c;LinkedList&#xff08;双向链表&#xff09; 4&#xff0c;哈希表 5&#xff0c;集合 6&#xff0c;Binary…...

Jenkins的原理及应用详解(二)

本系列文章简介&#xff1a; Jenkins是一种自动化构建工具&#xff0c;它的出现使得软件开发过程变得更加高效、可靠和可持续。它采用了一种事件驱动的架构&#xff0c;能够通过触发不同的事件来执行相应的构建任务和操作。Jenkins支持多种版本控制系统的集成&#xff0c;可以自…...