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

全方位掌握卷积神经网络:理解原理 优化实践应用

计算机视觉CV的发展 

检测任务
分类与检索
超分辨率重构
医学任务
无人驾驶

整体网络架构

卷积层和激活函数(ReLU)的组合是网络的核心组成部分

激活函数(ReLU)

引入非线性,增强网络的表达能力。

卷积层

负责特征提取

池化层(Pooling Layer)

它在网络中起到加速和降维的作用。

最大池化

全连接层(FC)

全连接层将卷积和池化后的特征图转换为分类任务所需的特征向量。

特征图的变化过程

随着网络的深入,特征图的尺寸会发生变化,这取决于卷积核的大小和步长。特征图的维度在实际应用中可以根据任务需求自行设置卷积核的数量和大小,以及池化层的参数。

  1. 数据输入:网络接收原始图像数据,通常是一个多维数组,表示为高度、宽度和颜色通道(如RGB图像的3个通道)。

  2. 卷积层:图像通过卷积层,每个卷积核(或滤波器)在图像上滑动,执行卷积操作以提取局部特征。这通常会导致特征图的尺寸增加,因为每个卷积核都会生成一个新的特征图。

  3. 激活函数:卷积操作后,通常会应用一个激活函数(如ReLU),以引入非线性,增强网络的表达能力。

  4. 池化层:为了降低特征图的维度,减少计算复杂度,并提取更抽象的特征,会应用池化操作(如最大池化或平均池化)。这会导致特征图尺寸的减小,但保留最重要的特征。

  5. 重复卷积和池化:这个过程会多次重复,每次都会提取更高层次的特征,同时特征图的尺寸逐渐减小。

  6. 展平:在网络的末端,特征图会被展平为一个一维向量,因为全连接层(FC层)只能处理一维数据。

  7. 全连接层:展平后的特征向量通过全连接层,这一层负责将提取的特征映射到最终的分类结果。全连接层的输出节点数量通常等于分类任务的类别数量。

  8. 输出:全连接层的输出通过一个softmax激活函数(对于多分类任务),将输出转换为概率分布,每个类别的概率值表示该类别的预测概率。

经典网络

Alexnet

  • 年份:2012年
  • 特点
    • 使用ReLU激活函数代替传统的Sigmoid或Tanh,加速训练。
    • 使用Dropout减少过拟合。
    • 实施了局部响应归一化(LRN),虽然后来的研究表明LRN并不总是有益的。
    • 使用多GPU训练,由于当时的GPU内存限制。
  • 层数:较浅,5个卷积层和3个全连接层。
  • 影响:AlexNet在2012年的ImageNet挑战中获胜,证明了深度学习在视觉任务中的潜力。

Vgg

  • 年份:2014年
  • 特点
    • 强调了使用更小的(3x3)卷积核堆叠的重要性。
    • 展示了通过增加网络深度可以提升性能。
    • 网络架构非常规整,主要由重复的3x3卷积和2x2最大池化层组成。
  • 层数:较深,有VGG16和VGG19两个版本,分别含有16和19层。
  • 影响:VGG简化了网络结构的复杂度,并在多个视觉任务中取得了很好的效果。

ResNet(残差网络)

  • 年份:2015年
  • 特点
    • 引入残差学习(Residual Learning)概念,通过跳跃连接解决了深度网络的退化问题。
    • 允许构建非常深的网络(例如ResNet有50层、101层、152层版本)而不会出现梯度消失/爆炸问题。
    • 性能随网络深度的增加而增加。
    • 减少了训练深度网络的难度。
  • 层数:非常深,从34层扩展到超过1000层。
  • 影响:ResNet在多个基准测试中取得了先进的结果,成为了很多现代网络架构的基础。
解决层次越多性能越差的问题

以下是ResNet的一些关键原理和特点:

残差学习(Residual Learning)

在传统的神经网络中,每一层都直接学习期望的输出。ResNet则改变了这一策略,通过学习输入与输出之间的残差(即差异)来简化学习过程。具体来说,如果我们的目标是学习某个映射 H(x),ResNet将网络层设计成学习残差映射 F(x) = H(x) - x。理论上,学习残差比直接学习未映射函数更简单。

跳跃连接(Skip Connections)

ResNet通过引入所谓的“跳跃连接”(也称为快捷连接或恒等连接)来实现残差学习。在跳跃连接中,输入不仅传递到下一层,还直接添加到更深层的输出上。这种连接方式允许网络在训练过程中有效地传播梯度,从而缓解梯度消失的问题,同时也提高了网络的学习能力。

x是保底输出,保证多层卷积至少有更优输出

深度网络

ResNet使得构建非常深的神经网络成为可能。传统的深度网络随着层数的增加,性能越来越差。但在ResNet中,即使是几十层到上百层的网络,也能通过残差学习有效地训练。

强化特征传播

跳跃连接强化了前向传播和反向传播的过程。在前向传播过程中,它允许原始的输入信息直接传到后面的层;在反向传播时,梯度可以直接流回到前面的层,从而提高整个网络的训练效率和稳定性。

由于这些特性,ResNet在图像识别、分类等领域取得了显著的成果,可以有效地训练非常深的网络模型而不会导致性能显著下降。ResNet架构的出现,对深度学习领域的发展产生了重大影响。

前置概念

步长

步长是卷积滤波器在输入特征图上移动的距离。每次应用卷积核后,滤波器会根据步长值移动相应的像素数来开始下一次操作。

  1. 步长为1:滤波器每次移动一个像素。
  2. 步长大于1:滤波器跳过中间的像素,这会导致输出特征图的尺寸小于输入尺寸。

步长 S 影响了输出特征图的尺寸和感受野的覆盖范围。感受野是指输出特征图中每个元素对应的输入图像上的区域大小。步长决定了感受野滑动过输入图像时的快慢。

如果步长大于1,输出特征图的空间维度会比输入图像小。如果步长为1且使用了适当的填充,那么输入和输出的空间维度可以保持不变

填充

填充是在输入数据的边缘添加额外的、通常是零值的像素来增加输入数据的尺寸的过程。这样做的目的有两个:

  1. 保持尺寸:无填充的卷积通常会减小特征图的空间维度,填充允许我们控制特征图的大小,可以保持尺寸不变或根据需要调整尺寸。

  2. 边缘信息:在不使用填充的情况下,卷积操作会导致图像边缘的信息比中心部分的信息使用得更少,因为边缘像素在滤波器窗口中出现的次数少于中心像素。填充确保边缘像素也被充分利用。

填充的大小 P 指的是在每个边缘添加的像素行(或列)的数量。

填充举例

感受野

概念介绍

这张图说明了在卷积神经网络(CNN)中感受野的概念。感受野指的是输入图像中影响卷积层输出的区域大小。

在这个特定的例子中,有两个卷积操作:

  1. 第一次卷积(First Conv):使用了3x3的卷积核,这意味着每个卷积操作的输出都是由输入特征图上3x3的区域计算得到的。因此,第一层卷积的直接感受野是3x3。

  2. 第二次卷积(Second Conv):这一层也使用3x3的卷积核。由于它是在第一次卷积的输出上进行的,它的感受野不仅仅局限于其直接输入的3x3区域。由于第一层的每个3x3的输出已经包含了原始输入的一个3x3的区域,第二层的3x3卷积核将覆盖更大的原始输入区域。具体来说,它会覆盖5x5的原始输入区域(因为中心像素的相邻像素在原始输入中已经包含了周围的两个像素)。

在图中红色虚线表示第二层卷积操作的感受野扩展到了更大的输入区域。这是因为第二层的输出依赖于第一层的输出,而第一层的每个输出又依赖于输入的一个3x3区域。

所以,随着通过网络层的深入,每个卷积层的输出所对应的输入图像上的感受野是逐渐扩大的。这就是为什么深层的网络能够捕捉到输入数据中更大范围的特征。

图中的注释指出,如果使用3x3的卷积核进行两次卷积,最终得到的感受野是7x7,这是因为第一次卷积的3x3感受野在第二次卷积后向外扩展了两个像素的距离(对每个方向)。这样两层3x3卷积的组合就能覆盖7x7的输入区域,比单独一次使用更大卷积核(比如7x7)来得到相同大小感受野的方式更有效率,因为它减少了计算量并保留了更多的空间信息。

小型卷积核的堆叠替代大卷积核

使用小型卷积核的堆叠(例如多层3x3卷积核)而不是单个大型卷积核(例如7x7卷积核)有几个优势:

  1. 减少计算量:相比于使用一个7x7的卷积核,两个3x3的卷积核的参数数量更少。一个7x7卷积核含有49个权重,而3x3卷积核只有9个权重。两个3x3卷积核总共18个权重,参数数量减少了超过一半。这意味着网络在学习这些权重时需要的计算量更少,同时还减少了模型的存储需求。

  2. 增加非线性:每次卷积操作后通常会跟随一个非线性激活函数(如ReLU)。如果使用两个3x3卷积核代替一个7x7卷积核,网络将有两次非线性变换的机会而不是一次。这增加了模型的非线性能力,使得网络可以捕捉到更复杂的特征。

  3. 保留更多空间信息:在多个小卷积核的情况下,信息在传递过程中得到更好的保留。每层都对其输入进行一些处理,而不是让一个单一的大卷积核一次性完成所有工作。这种逐层处理有助于保留空间层次结构中的细节信息。

  4. 更好的感受野管理:堆叠卷积层可以逐渐扩大感受野,而不是一次性在一个大的感受野中操作。这种渐进式的方式允许网络更细致地了解每个区域,逐层构建更高层次的抽象。

这些因素共同作用使得深层卷积网络可以更有效地学习,同时保持了计算上的高效性。这就是为什么在ResNet和其他现代CNN架构中,小型卷积核的使用变得如此流行。

特征输入和滤波器相关参数计算

卷积结果特征值的计算方法

假设我们有一个输入特征图,它的大小为 7x7x3(高x宽x深度),这里的深度3代表RGB三个颜色通道。我们有一个3x3x3大小的滤波器,这意味着滤波器在每个颜色通道上都有一个3x3的权重矩阵。此外,每个滤波器都有一个偏置值。

在卷积操作中,我们会进行以下步骤来计算输出特征图中一个位置的特征值:

  1. 对应元素相乘:我们将滤波器的每个权重与输入特征图对应位置的值相乘。

  2. 求和:将上一步中所有乘积的结果相加得到一个总和。

  3. 加上偏置:将上一步的总和加上滤波器的偏置值。

  4. 激活函数:通常,我们还会通过一个激活函数(如ReLU)来处理上一步的结果

如果我们计算R通道的特征值,假设输入特征图的R通道和滤波器的R通道权重如下:

输入特征图R通道的一个3x3区域:
0 0 0
0 1 1
0 1 1

滤波器R通道权重:
1 -1  0
1  0 -1
1  1 -1

我们将这两个3x3矩阵中对应位置的元素相乘,然后将结果相加:

(0*1 + 0*(-1) + 0*0) + (0*1 + 1*0 + 1*(-1)) + (0*1 + 1*1 + 1*(-1)) = 0 + (-1) + 1 = 0

这样我们就得到了R通道的特征值。同样的操作也会应用于G和B通道,并将得到的特征值相加,然后加上偏置值得到最终的特征值。如果G通道计算结果是2,B通道是0,偏置是1,则最终特征值为:

R通道结果 + G通道结果 + B通道结果 + 偏置 = 0 + 2 + 0 + 1 = 3

卷积结果长和宽的计算公式

图片中的示例说明了如何使用这些公式来计算输出特征图的尺寸。

  • 一个输入特征图大小为 7x7x3(H1 = 7, W1 = 7)。
  • 滤波器(卷积核)大小为 3x3(FH = 3, FW = 3)。
  • 假设填充为1(P = 1),步长为1(S = 1)。

那么,我们可以计算输出特征图的每个维度:

 所以,输出特征图的尺寸将会是 7x7x3,其中3是输出特征图的通道数,每个卷积核产生一个通道的输出。

最终的输出尺寸与输入尺寸相同是由于选择了适当的填充(1)和步长(1),这种设计通常用于确保特征图的空间维度在卷积操作后保持不变,这在某些网络设计中是需要的。

滤波器权重计算

  • 输入特征图的深度决定了每个滤波器的深度。例如,对于彩色图像,输入特征图的深度通常是3,对应于RGB三个颜色通道。每个滤波器在这种情况下也将有3个通道,使其能够应用于输入特征图的所有通道
  • 滤波器的个数,也就是卷积层中滤波器(卷积核)的数量,决定了卷积层输出特征图的深度。

如果每个滤波器的大小是 3x3x3,那么每个滤波器的权重数量是:3×3×3=27  。如果我们有三个这样的滤波器,那么总权重数量就是:3×27= 81。每个滤波器还有一个偏置参数,因此两个滤波器的总偏置数量是3,所以这个卷积层的总参数数量是权重和偏置的和:

81权重+3 偏置= 84 

卷积参数共享

在传统的全连接层中,每个输入单元与每个输出单元都有一个唯一的权重,这意味着参数的数量会随着输入数据的大小迅速增加。相比之下,卷积层通过参数共享大大减少了模型的参数数量。

一个卷积核(或滤波器)的权重在整个输入特征图上滑动并应用,这意味着同一卷积核的权重在每个位置都是相同的。因此,无论输入特征图有多大,该卷积核的权重数量保持不变。

引用资料

【导师不教我来教!】基于Pytorch框架的鸢尾花分类实战,IT博士手把手带你跑通鸢尾花分类数据集,深度学习新手必备!---附数据集_哔哩哔哩_bilibili

相关文章:

全方位掌握卷积神经网络:理解原理 优化实践应用

计算机视觉CV的发展 检测任务 分类与检索 超分辨率重构 医学任务 无人驾驶 整体网络架构 卷积层和激活函数(ReLU)的组合是网络的核心组成部分 激活函数(ReLU) 引入非线性,增强网络的表达能力。 卷积层 负责特征提取 池化层…...

视频批量处理:随机分割方法,创新剪辑方式

随着数字媒体技术的飞速发展,视频处理已是日常生活和工作中不可或缺的一部分。在处理大量视频时,要一种高效、自动化的方法来满足需求。现在一起来看云炫AI智剪如何批量随机分割视频的批量处理方法,给视频剪辑工作带来创新。 视频随机分割4段…...

Gaussian-Splatting 训练并导入Unity中

这个周末玩点啥~🐞 🍥环境安装💡安装C编译工具💡安装Python💡安装CUDA💡添加ffmpeg到环境变量Path添加COLMAP-3.8-windows-cuda文件路径到环境变量Path💡pytorch安装💡tqdm 安装&…...

账号和权限管理

目录 一、用户账号和的概述 (一)用户类别 (二)组账号 ​编辑(三)UID号 ​编辑(四)GID号 (五)配置文件 二、用户账号管理 (一)…...

前端---表单标签

1. 表单的介绍 表单用于搜集不同类型的用户输入(用户输入的数据)&#xff0c;然后可以把用户数据提交到web服务器 。 2. 表单相关标签的使用 <form>标签 表示表单标签&#xff0c;定义整体的表单区域 <label>标签 表示表单元素的文字标注标签&#xff0c;定义文字…...

Matplotlib 绘制基本的图表

# 导入包 import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][SimHei] # 用来显示中文 plt.rcParams[axes.unicode_minus] False # 显示负坐标轴# 读取源数据&#xff0c;后续大部分数据基于词文件的数据&#xff0c;需…...

【JavaScript】异步解决方案的发展历程

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…...

前端性能优化三十四:花裤衩模板引入打包分析工具

测量各个插件和loader所花费的时间 (1). install: yarn add speed-measure-webpack-plugin -D(2). Vue-cli 3.x设置: const SpeedMeasurePlugin require(speed-measure-webpack-plugin) const smp new SpeedMeasurePlugin({outputFormat: human }) // 包裹configureWebpac…...

求职小程序列表基础配置-移动端通用列表模块配置教程(1)

求职小程序列表基础配置-移动端通用列表模块配置教程(1) 移动端通用列表页开发指南 准备工作 注册多八多AIIDE账号: 访问多八多AIIDE官网并注册新账号。完成邮箱和手机号的验证。 创建移动应用: 登录后&#xff0c;在工作台新建一个移动应用。填写应用名称&#xff0c;选择“…...

牛客设计模式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…...

从零构建tomcat环境

一、官网构建 1.1 下载 一般来说对于开源软件都有自己的官方网站&#xff0c;并且会附上使用文档以及一些特性和二次构建的方法&#xff0c;那么我们首先的话需要从官网或者tomcat上下载到我们需要的源码包。下载地址&#xff1a;官网、Github。 这里需要声明一下&#xff…...

MySQL递归公用表表达式

&#x1f607;作者介绍&#xff1a;一个有梦想、有理想、有目标的&#xff0c;且渴望能够学有所成的追梦人。 &#x1f386;学习格言&#xff1a;不读书的人,思想就会停止。——狄德罗 ⛪️个人主页&#xff1a;进入博主主页 &#x1f5fc;专栏系列&#xff1a;MySQL知识 &…...

深入 K8s 网络原理(一)- Flannel VXLAN 模式分析

1. 概述 这周集中聊下 K8s 的集群网络原理&#xff0c;我初步考虑分成3个方向&#xff1a; Pod-to-Pod 通信&#xff08;同节点 or 跨节点&#xff09;&#xff0c;以 Flannel VXLAN 模式为例&#xff1b; Pod/External-to-Service 通信&#xff0c;以 iptables 实现为例&…...

fpga 8段4位数码管verilator模拟

8段4位数码管verilator模拟 seg.v module seg(input wire clk,input wire rst_n,output wire[7:0] SEG,output wire[3:0] SEL );reg[7:0] digit[0:15] {8h3f, 8h06, 8h5b, 8h4f, 8h66, 8h6d, 8h7d,8h07,8h7f,8h6f, 8h77, 8h7c, 8h39, 8h5e, 8h79, 8h71};reg[31:0] cnt 32…...

HttpURLConnection发送各种内容格式

通过java.net.HttpURLConnection类实现http post发送Content-Type为multipart/form-data的请求。 json处理使用com.fasterxml.jackson 图片压缩使用net.coobird.thumbnailator log使用org.slf4j 一些静态变量 private static final Charset charset StandardCharsets.UTF_8;…...

摇杆控制人物移动

摇杆控制人物移动 一、UI搭建二、3d模型搭建三、脚本JoyStickBar.csPlayerController.cs 工程在我资源里名字叫Joystickbar.unitypackage [连接](https://download.csdn.net/download/qq_42194657/12043019?spm1001.2014.3001.5503) 一、UI搭建 JoyStickBar是图片背景 JoySt…...

Jenkins自动化部署之后端

准备工作参考本人另外几篇Jenkins相关的文章 新建任务 添加参数配置 字符串参数&#xff1a;分支名称 多选框&#xff1a;项目名称&#xff08;Extended Choice Parameter插件必备&#xff0c;插件安装参考我另外的文章&#xff09; 这个分割规则自定义。只要根据Jenkins…...

Could not resolve com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.28.

1、首先进入阿里云maven仓库&#xff0c;在搜索栏输入无法下载的依赖名称&#xff0c;查询现有版本号&#xff0c;可以看到这里有2.9.34。 2、在build.gradle(Project)的buildscript闭包下替换为阿里云maven仓库&#xff1a; maven { url https://www.jitpack.io } maven { u…...

RK3588平台开发系列讲解(AI 篇)RKNN rknn_query函数详细说明

文章目录 一、查询 SDK 版本二、查询输入输出 tensor 个数三、查询输入 tensor 属性(用于通用 API 接口)四、查询输出 tensor 属性(用于通用 API 接口)五、查询模型推理的逐层耗时六、查询模型推理的总耗时七、查询模型的内存占用情况八、查询模型里用户自定义字符串九、查询原…...

15个主流设计灵感网站,激发你的创作灵感!

即时设计 即时设计是一种强大的云设计工具&#xff0c;已成为许多设计师、产品经理和开发人员的首选工具之一。即时设计用户可以使用内置的工具和功能快速创建和编辑设计&#xff0c;或与其他用户共享和合作。此外&#xff0c;即时设计还有一个丰富的资源社区&#xff0c;为用…...

Matlab:解非线性方程组

1、基于问题求解非线性方程组 例&#xff1a; xoptimvar(x,2); %将x定义为一个二元素优化变量 eq1exp(-exp(-(x(1)x(2))))x(2)*(1x(1)^2); %创建第一个方程作为优化等式表达式 eq2x(1)*cos(x(2))x(2)*sin(x(1))1/2; %创建第二个方程作为优化等式表达式 probe…...

面向 AI,重塑云基础设施、存储、芯片、Serverless……2023亚马逊云科技re:Invent中国行

一年一度亚马逊云科技重要的技术盛会 re:Invent 刚落下帷幕&#xff0c;2023 亚马逊云科技 re:Invent 中国行就将其中重要的信息与内容带给了中国市场和用户。作为全球的云计算巨头&#xff0c;今年亚马逊云科技可以说全面加码 AI&#xff0c;例如发布完整的端到端生成式 AI 技…...

【JDK新特性】JDK和Springboot各版本新特性介绍

目录 参考资料 以下是一些较新版本的JDK的主要新特性介绍&#xff1a; JDK 8&#xff1a; Lambda 表达式&#xff1a;引入了函数式编程的概念&#xff0c;使得代码更简洁、可读性更强。Stream API&#xff1a;提供了一种高效处理集合数据的方式&#xff0c;支持并行处理。默认…...

tomcat剖析:开篇

一、简介 本专栏为解析tomcat的专栏&#xff0c;用于一步步的从构建到执行&#xff0c;再到剖析tomcat的内部构造&#xff0c;然后再加上自己的理解&#xff0c;从0到1去认识我们日常开发中不可或缺的web容器&#xff0c;希望对之后的软件设计能够有所启示。 二、步骤 2.1构…...

华为路由器:DHCP配置

在大型企业网络中&#xff0c;会有大量的主机获取IP地址等网络参数。如果采用手工配置&#xff0c;则工作量大不好管理&#xff0c;若用户擅自更改网络参数&#xff0c;则容易导致IP冲突。 因此使用动态主机配置协议&#xff08;DHCP&#xff09;可以减少管理员的工作量&#x…...

(企业 / 公司项目)微服务OpenFeign怎么实现服务间调用?(含面试题)

Feign: 远程调用组件使用步骤&#xff0c;理解上面的图  后台系统中, 微服务和微服务之间的调用可以通过Feign组件来完成.  Feign组件集成了Ribbon负载均衡策略(默认开启的, 使用轮询机制),Hystrix熔断器 (默认关闭的, 需要通过配置文件进行设置开启)  被调用的微服务…...

数据结构:图文详解 树与二叉树(树与二叉树的概念和性质,存储,遍历)

目录 一.树的概念 二.树中重要的概念 三.二叉树的概念 满二叉树 完全二叉树 四.二叉树的性质 五.二叉树的存储 六.二叉树的遍历 前序遍历 中序遍历 后序遍历 一.树的概念 树是一种非线性数据结构&#xff0c;它由节点和边组成。树的每个节点可以有零个或多个子节点…...

DM工作笔记-在windows下对DM7进行库还原恢复

提供了这些备份数据 在windows平台上&#xff0c;将这些备份数据还原到新库中。 首先实例得先停掉&#xff1a; 使用的软件console.exe&#xff1a; 重要步骤&#xff1a;①获取备份&#xff1b;②还原&#xff1b;③恢复 记住DMAP方式这个不要勾选&#xff0c;然后再获取备份…...

STM32软硬件CRC测速对比

硬件CRC配置 以及软硬件CRC速度对比 使用CUBEMX配置默认使用的是CRC32&#xff0c;从库中可以看出这一点 HAL库提供了以下两个计算函数 HAL_CRC_Accumulate(CRC_HandleTypeDef *hcrc, uint32_t pBuffer[], uint32_t BufferLength); 这个函数用于在已有的CRC校验结果的基础上累积…...

第九部分 图论

目录 例 相关概念 握手定理 例1 图的度数列 例 无向图的连通性 无向图的连通度 例2 例3 有向图D如图所示&#xff0c;求 A, A2, A3, A4&#xff0c;并回答诸问题&#xff1a; 中间有几章这里没有写&#xff0c;感兴趣可以自己去学&#xff0c;组合数学跟高中差不多&#xff0c…...

如何用java实现对java虚拟机的性能监控?

要使用Java实现对Java虚拟机&#xff08;JVM&#xff09;的性能监控&#xff0c;可以使用Java Management Extensions&#xff08;JMX&#xff09;来获取和监控JVM的各种指标。以下是一个简单的示例代码&#xff0c;演示如何使用JMX监控JVM的内存使用情况&#xff1a; import …...

电路设计(7)——窗口比较器的multism仿真

1.功能设计 构建一个窗口比较器的电路&#xff0c;在输入电压大于3.5v&#xff0c;小于0.8v时&#xff0c;蜂鸣器报警&#xff0c;输入电压在0.8v到3.5v之间时&#xff0c;不报警。 整体电路如下&#xff1a; 2.设计思路 在输入端&#xff0c;采取电阻分压的方式&#xff0c;输…...

前端已死?探讨人工智能与低代码对前端的影响

文章目录 每日一句正能量前言前端行业究竟是好是坏&#xff1f;数字化转型的当下前端工程师该何去何从&#xff1f; 想要入行前端先认清这三个事实 后记 每日一句正能量 人的结构就是相互支撑&#xff0c;众人的事业需要每个人的参与。 前言 随着人工智能和低代码的崛起&#…...

树莓派,opencv,Picamera2利用舵机云台追踪人脸(PID控制)

一、需要准备的硬件 Raspiberry Pi 4b两个SG90 180度舵机&#xff08;注意舵机的角度&#xff0c;最好是180度且带限位的&#xff0c;切勿选360度舵机&#xff09;二自由度舵机云台&#xff08;如下图&#xff09;Raspiberry CSI 摄像头 组装后的效果&#xff1a; 二、项目目…...

uniapp中推出当前微信小程序

uni.exitMiniProgram() 通过代码直接退出当前小程序 uni.exitMiniProgram({success: function() {console.log(退出小程序成功);},fail: function(err) {console.log(退出小程序失败, err);} })...

AndroidStudio无法新建aidl文件解决办法

我用的 AS 版本是 Android Studio Giraffe | 2022.3.1 Build #AI-223.8836.35.2231.10406996, built on June 29, 2023 右键新建 aidl 文件&#xff0c; 提示 (AIDL File)Requires setting the buildFeatures.aidl to true in the build file 解决办法 修改 app 的 build.…...

java爬虫(jsoup)如何设置HTTP代理ip爬数据

目录 前言 什么是HTTP代理IP 使用Jsoup设置HTTP代理IP的步骤 1. 导入Jsoup依赖 2. 创建HttpProxy类 3. 设置代理服务器 4. 使用Jsoup进行爬取 结论 前言 在Java中使用Jsoup进行网络爬虫操作时&#xff0c;有时需要使用HTTP代理IP来爬取数据。本文将介绍如何使用Jsoup设…...

ZooKeeper Client API 安装及使用指北

下载 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.4-beta/zookeeper-3.5.4-beta.tar.gz解压 tar -zxf zookeeper-3.5.4-beta.tar.gz安装 cd zookeeper-3.5.4-beta/src/c/ ./configure make sudo make install到 make 这一步大概率会出现报错&#xff1a;…...

本机ping不通虚拟机

windows下finall shell连不上虚拟机了&#xff0c;之前是可以的&#xff0c;然后ping虚拟机&#xff0c;发现也ping不通&#xff0c;随后到处找问题。 在本地部分&#xff0c;控制面板 ——>网络和Internet——>网络连接 &#xff0c; 可以看到 VMnet1和Vmnet8虽然都是已…...

Linux cfdisk命令

Linux cfdisk命令用于磁盘分区。 cfdisk是用来磁盘分区的程序&#xff0c;它十分类似DOS的fdisk&#xff0c;具有互动式操作界面而非传统fdisk的问答式界面&#xff0c;您可以轻易地利用方向键来操控分区操作。 语法 cfdisk [-avz][-c <柱面数目>-h <磁头数目>-…...

实用学习网站和资料

github:https://github.com/GitHubDaily/GitHubDaily Linux操作手册&#xff1a; GitHub - abarrak/linux-sysops-handbook: Essentials of Linux system administration. 从零开始制作一个操作系统&#xff1a; GitHub - ruiers/os-tutorial-cn: 从零开始编写一个操作系统…...

【已解决】c++qt如何制作翻译供程序调用

本博文源于笔者正在编写的工具需要创建翻译文件&#xff0c;恰好将qt如何进行翻译&#xff0c;从零到结果进行读者查阅&#xff0c;并非常推荐读者进行收藏点赞&#xff0c;因为步步都很清晰&#xff0c;堪称胎教式c制作&#xff0c;而且内容还包括如何部署在windows下。堪称值…...

DPDK单步跟踪(3)-如何利用visual studio 2019和visual gdb来单步调试dpdk

准备工作 因为时间的关系&#xff0c;我想到哪说到哪&#xff0c;可能没那么高的完成度。 但其实有心的人&#xff0c;看到这个标题&#xff0c;就关了本文自己能做了。 why和how to build debug version DPDK,见前两篇。这里我们准备开始。 首先&#xff0c;你有一台linux机…...

Python爬虫---解析---BeautifulSoup

BeautifulSoup简称&#xff1a;bs4 作用&#xff1a;解析和提取数据 1. 安装&#xff1a;pip install bs4 或pip install bs4 -i https://pypi.douban.com/simple&#xff08;使用国内镜像下载&#xff09; 注意&#xff1a;需要安装在python解释器相同的位置,例如&#xf…...

Argument list too long when copying files

for i in /path/to/dir/*; do cp "$i" /path/to/other/dir/; done...

configure

configure 配置软件./configure --prefix$PWD/output CCaarch64-linux-gcc --hostaarch64-linux --enable-shared --enable-staticconfig.sub 文件 这个文件用于确定主机系统的类型&#xff0c;并返回与该系统相关的标识符。它包含一系列 shell 函数&#xff0c;用于检测主机…...

HOJ 项目部署-前端定制 默认勾选显示标签、 在线编辑器主题和字号大小修改、增加一言功能 题目AC后礼花绽放

# 项目拉取地址&#xff1a; https://gitee.com/himitzh0730/hoj.git # 切换到hoj-vue目录执行以下命令 #安装依赖 npm install #运行服务 npm run serve #修改代码后构建项目到dist文件夹&#xff0c;到服务器docker-compose.yml中修改hoj-frontend文件映射即可 npm run build…...

Scikit-Learn线性回归(二)

Scikit-Learn线性回归二:多项式回归 1、多项式回归2、多项式回归的原理3、Scikit-Learn多项式回归3.1、Scikit-Learn多项式回归API1、多项式回归 线性回归研究的是一个自变量与一个因变量之间的回归问题。在实际应用中,并不是所有的情景都符合线性关系,大多数情况都是非线性…...

07 Vue3框架简介

文章目录 一、Vue3简介1. 简介2. 相关网站3. 前端技术对比4. JS前端框架5. Vue核心内容6. 使用方式 二、基础概念1. 创建一个应用2. 变量双向绑定&#xff08;v-model&#xff09;3. 条件控制&#xff08;v-if&#xff09;4. 数组遍历&#xff08;v-for&#xff09;5. 绑定事件…...

前端八股文(js篇)

一.强制类型转换规则 首先需要了解隐式转换所调用的函数。 当程序员显示调用Boolean&#xff08;value&#xff09;,Number&#xff08;value&#xff09;&#xff0c;String&#xff08;value&#xff09;完成的类型转换&#xff0c;叫做显示类型转换。 当通过new Boolean&…...