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

一文搞懂深度信念网络!DBN概念介绍与Pytorch实战

目录

  • 一、概述
    • 1.1 深度信念网络的概述
    • 1.2 深度信念网络与其他深度学习模型的比较
        • 结构层次
        • 学习方式
        • 训练和优化
        • 应用领域
    • 1.3 应用领域
        • 图像识别与处理
        • 自然语言处理
        • 推荐系统
        • 语音识别
        • 无监督学习与异常检测
        • 药物发现与生物信息学
  • 二、结构
    • 2.1 受限玻尔兹曼机(RBM)
        • 结构与组成
        • 工作原理
        • 学习算法
        • 应用
    • 2.2 DBN的结构和组成
        • 层次结构
        • 网络连接
        • 训练过程
        • 应用领域
    • 2.3 训练和学习算法
        • 预训练
        • 微调
        • 优化方法
        • 评估和验证
  • 三、实战
    • 3.1 DBN模型的构建
        • 定义RBM层
        • 构建DBN模型
        • 定义DBN的超参数
    • 3.2 预训练
        • RBM的逐层训练
        • 对比散度(CD)算法
    • 3.3 微调
        • 监督训练
        • 微调训练
        • 模型验证和测试
    • 3.4 应用
        • 分类或回归任务
        • 特征学习
        • 转移学习
        • 在线应用
  • 四、总结

本文深入探讨了深度信念网络DBN的核心概念、结构、Pytorch实战,分析其在深度学习网络中的定位、潜力与应用场景。

关注TechLead,分享AI与云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

file

一、概述

1.1 深度信念网络的概述

深度信念网络(Deep Belief Networks, DBNs)是一种深度学习模型,代表了一种重要的技术创新,具有几个关键特点和突出能力。

首先,DBNs是由多层受限玻尔兹曼机(Restricted Boltzmann Machines, RBMs)堆叠而成的生成模型。这种多层结构使得DBNs能够捕获数据中的高层次抽象特征,对于复杂的数据结构具有强大的表征能力。

其次,DBNs采用无监督预训练的方式逐层训练模型。与传统的深度学习模型不同,这种逐层学习策略使DBNs在训练时更为稳定和高效,尤其适合处理高维数据和未标记数据。

此外,DBNs具有出色的生成学习能力。它不仅可以学习和理解数据的分布,还能够基于学习到的模型生成新的数据样本。这种生成能力在图像合成、文本生成等任务上有着广泛的应用前景。

最后,DBNs的训练和优化涉及到一些先进的算法和技术,如对比散度(Contrastive Divergence, CD)算法等。这些算法的应用和改进,使DBNs在许多实际问题上表现卓越,但同时也带来了一些挑战,如参数调优的复杂性等。

总的来说,深度信念网络通过其独特的结构和生成学习的能力,展示了深度学习的新方向和潜力。它的关键技术创新和突出能力使其在诸多领域成为一种有力的工具,为人工智能的发展和应用提供了新的机遇。

1.2 深度信念网络与其他深度学习模型的比较

深度信念网络(DBNs)作为深度学习领域的一种重要模型,与其他深度学习模型有着许多共同点,但也有着鲜明的特色。以下我们从不同的角度来比较DBNs与其他主要深度学习模型。

结构层次

  • DBNs: 由多层受限玻尔兹曼机堆叠而成,每一层都对上一层的表示进行进一步抽象。采用无监督预训练,逐层构建复杂模型。
  • 卷积神经网络(CNNs): 采用卷积层、池化层等特殊结构,适合空间数据如图像。
  • 循环神经网络(RNNs): 通过时间递归结构,适合处理序列数据如文本。

学习方式

  • DBNs: 具有生成学习能力,可以生成新的数据样本,适用于无监督学习和半监督学习场景。
  • CNNs、RNNs: 主要进行判别学习,通过监督学习进行分类或回归等任务。

训练和优化

  • DBNs: 使用对比散度等复杂优化算法,参数调优相对困难。
  • CNNs、RNNs: 可以使用梯度下降等常见优化方法,训练过程相对更为直观和容易。

应用领域

  • DBNs: 由于其生成学习和多层结构特性,特别适合处理高维数据、缺失数据等复杂场景。
  • CNNs: 在图像处理领域有着广泛的应用。
  • RNNs: 在自然语言处理和时间序列分析等领域有优势。

1.3 应用领域

深度信念网络(DBNs)作为一种强大的深度学习模型,已广泛应用于多个领域。其能够捕捉复杂数据结构的特性,让DBNs在以下应用领域中表现出卓越的能力。

图像识别与处理

DBNs可以用于图像分类、物体检测和人脸识别等任务。其深层结构可以捕获图像中的复杂特征,比如纹理、形状和颜色等。在医学图像分析方面,DBNs也展现出强大的潜力,如用于疾病检测和组织分割等。

自然语言处理

通过与其他神经网络结构的组合,DBNs可以处理文本分类、情感分析和机器翻译等任务。其能够理解和生成语言的能力为处理复杂文本提供了强有力的工具。

推荐系统

DBNs的生成模型特性使其在推荐系统中也有广泛应用。通过学习用户和物品之间的潜在关系,DBNs能够生成个性化的推荐列表,从而提高推荐的准确性和用户满意度。

语音识别

在语音识别领域,DBNs可以用于提取声音信号的特征,并结合其他模型如隐马尔可夫模型(HMM)进行语音识别。其在复杂声音环境下的鲁棒性使其在这一领域有着显著优势。

无监督学习与异常检测

DBNs的无监督学习能力也使其在无监督聚类和异常检测等任务上表现出色。特别是在数据标签缺失或稀缺的场景下,DBNs可以提取有用的信息,用于发现数据中的潜在结构或异常模式。

药物发现与生物信息学

在药物发现和生物信息学方面,DBNs可以用于预测药物的生物活性、发现新的药物靶点等。其对高维数据的处理能力为解析复杂生物系统提供了有效手段。

二、结构

2.1 受限玻尔兹曼机(RBM)

file

受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)是深度信念网络的基本构建块。以下将详细介绍RBM的关键组成、工作原理和学习算法。

结构与组成

RBM是一种生成随机神经网络,由两层完全连接的神经元组成:可见层和隐藏层。

  • 可见层(Visible Layer): 包括对数据直接进行编码的神经元。
  • 隐藏层(Hidden Layer): 包括从可见层学习特征的神经元。

RBM中的连接是无向的,即连接是对称的。同一层中的神经元之间没有连接。

工作原理

RBM的工作原理基于能量函数,该函数定义了网络状态的能量。

  • 能量函数: RBM通过一个称为能量函数的数学公式来表示不同状态之间的关系。
  • 联合概率分布: RBM的能量与其状态的联合概率分布有关,其中较低的能量对应较高的概率。

学习算法

RBM的学习算法包括以下主要步骤:

  1. 前向传播: 从可见层到隐藏层的激活。
  2. 后向传播: 从隐藏层到可见层的重构。
  3. 梯度计算: 通过对比散度(Contrastive Divergence, CD)计算权重更新的梯度。
  4. 权重更新: 通过学习率更新权重。

应用

RBM被广泛用于特征学习、降维、分类等任务。作为深度信念网络的基本组成部分,RBM的应用也直接扩展到更复杂的数据建模任务中。

2.2 DBN的结构和组成

file
深度信念网络(Deep Belief Network,DBN)是一种深度学习模型,可以捕捉数据中的复杂层次结构。下面详细介绍DBN的结构和组成部分。

层次结构

file
DBN的结构由多个层组成,通常包括多个受限玻尔兹曼机(RBM)层和一个顶层。每一层由一组神经元组成,通过双向连接与相邻层的神经元相连。

  • 输入层: 对应数据的可见表示。
  • 隐藏层: 包括多个RBM层,每一层对应数据的更高层次抽象。
  • 顶层: 通常由一个RBM或其他模型组成,负责最终特征的提取和表示。

网络连接

file
DBN的连接结构遵循以下规则:

  • 同一层的神经元之间没有连接。
  • 每一层的神经元与上下层的所有神经元都有连接。
  • 连接是无向的(对于前几层的RBM)或有向的(对于顶层)。

训练过程

file
DBN的训练过程分为两个主要阶段:

  1. 预训练阶段: 每个RBM层按照从底到顶的顺序进行贪婪逐层训练。
  2. 微调阶段: 使用监督学习方法(如反向传播)对整个网络进行微调。

应用领域

DBN的结构和训练策略使其适用于许多复杂的建模任务,包括:

  • 特征学习: 学习输入数据的多层次抽象表示。
  • 分类: 基于学习的特征执行分类任务。
  • 生成建模: 生成与训练数据相似的新样本。

2.3 训练和学习算法

深度信念网络的训练是一个复杂且重要的过程。这一节将详细介绍DBN的训练和学习算法。

预训练

预训练是DBN训练的第一阶段,主要目的是初始化网络权重。

  • 逐层训练: DBN的每个RBM层单独训练,自底向上逐层进行。
  • 无监督学习: 使用无监督学习算法(如对比散度)训练RBM。
  • 生成权重: 每一层训练后,其权重用于下一层的输入。

微调

微调是DBN训练的第二阶段,调整预训练后的权重以改善性能。

  • 反向传播算法: 通常使用反向传播算法进行监督学习。
  • 误差最小化: 微调过程旨在通过调整权重最小化训练数据的预测误差。
  • 早停法: 通过在验证集上监控性能来防止过拟合。

优化方法

深度信念网络的训练通常涉及许多优化技术。

  • 学习率调整: 动态调整学习率可以加速训练并提高性能。
  • 正则化: 如L1和L2正则化有助于防止过拟合。
  • 动量优化: 动量可以帮助优化算法更快地收敛到最优解。

评估和验证

训练过程还包括对模型的评估和验证。

  • 交叉验证: 使用交叉验证来评估模型的泛化能力。
  • 性能指标: 使用如准确率、召回率等指标来评估模型性能。

三、实战

3.1 DBN模型的构建

深度信念网络是一种由多个受限玻尔兹曼机(RBM)层堆叠而成的生成模型。下面是构建DBN模型的具体步骤。

定义RBM层

RBM是DBN的基本构建块。它包括可见层和隐藏层,并通过权重矩阵连接。

class RBM(nn.Module):def __init__(self, visible_units, hidden_units):super(RBM, self).__init__()self.W = nn.Parameter(torch.randn(hidden_units, visible_units) * 0.1)self.h_bias = nn.Parameter(torch.zeros(hidden_units))self.v_bias = nn.Parameter(torch.zeros(visible_units))def forward(self, v):# 定义前向传播# 省略其他代码...
  • 权重初始化: 权重矩阵的初始化非常重要,通常使用较小的随机值。
  • 偏置项: 可见层和隐藏层都有偏置项,通常初始化为零。

构建DBN模型

DBN模型由多个RBM层组成,每一层的隐藏单元与下一层的可见单元相连。

class DBN(nn.Module):def __init__(self, layers):super(DBN, self).__init__()self.rbms = nn.ModuleList([RBM(layers[i], layers[i + 1]) for i in range(len(layers) - 1)])def forward(self, v):h = vfor rbm in self.rbms:h = rbm(h)return h
  • 逐层连接: 每个RBM层的输出成为下一个RBM层的输入。
  • 模块列表: 使用nn.ModuleList来存储RBM层,确保它们都被正确注册。

定义DBN的超参数

DBN的构建也涉及到选择合适的超参数,例如每个RBM层的可见和隐藏单元的数量。

# 定义DBN的层大小
layers = [784, 500, 200, 100]# 创建DBN模型
dbn = DBN(layers)

3.2 预训练

预训练是DBN训练过程中的一个关键阶段,通过逐层训练RBM来完成。以下是具体的预训练步骤。

RBM的逐层训练

DBN的每个RBM层都分别进行训练。训练一个RBM层的目的是找到可以重构输入数据的权重。

# 预训练每个RBM层
for index, rbm in enumerate(dbn.rbms):for epoch in range(epochs):# 使用对比散度训练RBM# 省略具体代码...print(f"RBM {index} trained.")
  • 逐层训练: 每个RBM层都独立训练,并使用上一层的输出作为下一层的输入。

对比散度(CD)算法

对比散度是训练RBM的常用方法。它通过对可见层和隐藏层的样本进行采样来更新权重。

# 对比散度训练
def contrastive_divergence(rbm, data, learning_rate):v0 = datah0_prob, h0_sample = rbm.sample_h(v0)v1_prob, _ = rbm.sample_v(h0_sample)h1_prob, _ = rbm.sample_h(v1_prob)positive_grad = torch.matmul(h0_prob.T, v0)negative_grad = torch.matmul(h1_prob.T, v1_prob)rbm.W += learning_rate * (positive_grad - negative_grad) / data.size(0)rbm.v_bias += learning_rate * torch.mean(v0 - v1_prob, dim=0)rbm.h_bias += learning_rate * torch.mean(h0_prob - h1_prob, dim=0)
  • 正相位和负相位: 正相位与数据分布有关,而负相位与模型分布有关。
  • 梯度更新: 权重更新基于正相位和负相位之间的差异。

3.3 微调

微调阶段是DBN训练流程中的最后部分,其目的是对网络进行精细调整以优化特定任务的性能。

监督训练

在微调阶段,DBN与一个或多个额外的监督层(例如全连接层)结合,以便进行有监督的训练。

# 在DBN上添加监督层
class SupervisedDBN(nn.Module):def __init__(self, dbn, output_size):super(SupervisedDBN, self).__init__()self.dbn = dbnself.classifier = nn.Linear(dbn.rbms[-1].hidden_units, output_size)def forward(self, x):h = self.dbn(x)return self.classifier(h)
  • 额外的监督层: 可以添加全连接层进行分类或回归任务。

微调训练

微调训练使用标准的反向传播算法,并可以采用任何常见的优化器和损失函数。

# 定义优化器和损失函数
optimizer = torch.optim.Adam(supervised_dbn.parameters(), lr=0.001)
criterion = nn.CrossEntropyLoss()# 微调训练
for epoch in range(epochs):for batch_idx, (data, target) in enumerate(train_loader):optimizer.zero_grad()output = supervised_dbn(data)loss = criterion(output, target)loss.backward()optimizer.step()
  • 优化器: 如Adam或SGD等。
  • 损失函数: 取决于任务,例如交叉熵损失用于分类任务。

模型验证和测试

微调阶段还涉及在验证和测试数据集上评估模型的性能。

# 模型验证和测试
def evaluate(model, data_loader):correct = 0with torch.no_grad():for data, target in data_loader:output = model(data)pred = output.argmax(dim=1)correct += (pred == target).sum().item()accuracy = correct / len(data_loader.dataset)return accuracy

3.4 应用

分类或回归任务

例如,DBN可用于图像分类、股价预测等。

特征学习

DBN可用于无监督的特征学习,以捕捉输入数据的有用表示。

转移学习

训练有素的DBN可以用作预训练的特征提取器,以便在相关任务上进行迁移学习。

在线应用

DBN可以集成到在线系统中,实时进行预测。

# 实时预测示例
def real_time_prediction(model, new_data):with torch.no_grad():prediction = model(new_data)return prediction

四、总结

深度信念网络(DBN)作为一种强大的生成模型,近年来在许多机器学习和深度学习任务中取得了成功。在这篇文章中,我们详细探讨了DBN的基础结构、训练过程以及评估和应用。以下是一些关键要点的总结:

  1. 结构和组成: DBN是由多个受限玻尔兹曼机(RBM)堆叠而成的,每个RBM层负责捕获数据的特定特征。

  2. 训练和学习算法: 训练过程包括预训练和微调两个阶段。预训练负责初始化权重,而微调则使用监督学习来优化模型的特定任务性能。

  3. 应用: 分类、回归、特征学习、转移学习等。

  4. 工具和实现: 使用PyTorch等深度学习框架,可以方便地实现DBN。文章提供了清晰的代码示例,帮助读者理解并实现这一复杂的模型。

关注TechLead,分享AI与云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

相关文章:

一文搞懂深度信念网络!DBN概念介绍与Pytorch实战

目录 一、概述1.1 深度信念网络的概述1.2 深度信念网络与其他深度学习模型的比较结构层次学习方式训练和优化应用领域 1.3 应用领域图像识别与处理自然语言处理推荐系统语音识别无监督学习与异常检测药物发现与生物信息学 二、结构2.1 受限玻尔兹曼机(RBM&#xff0…...

MyBatis:使用注解让数据库操作更简单

目录 一、简介 二、配置 三、基于注解的基本使用 四、测试 总结 一、简介 在Java开发中,数据库操作是一个常见而重要的任务。为了方便地执行SQL语句,获取结果集,处理异常等,我们通常需要使用JDBC(Java Database …...

基于PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化

我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB,遥感大数据时…...

4.网络设计与redis、memcached、nginx组件(一)

网络组件系列文章目录 第四章 网络设计与redis、memcached、nginx组件 文章目录 网络组件系列文章目录文章的思维导图前言一、网络相关的问题,网络开发中要处理那些问题?网络操作IO连接建立连接断开消息到达消息发送网络操作IO特性 二、网络中IO检测IO函…...

leetcode分类刷题:矩阵顺时针模拟

1、这种题目是对代码熟练度考察,模拟顺时针建立或访问矩阵,需要注意矩阵是否为方阵 2、具体思路:以圈数为循环条件,每一圈都坚持左闭右开的区间规则;当小的行列值为奇数,最后一圈为一行或一列或一个数字的不…...

Java8新特性整理记录

1、list实体集合根据某个属性分组后求和 方法一: list.stream().collect(Collectors.groupingBy(e -> e.getId())).values().stream().map(d -> {DemoEntity sampleData d.get(0);sampleData.setPremium(d.stream().map(s -> new BigDecimal(s.getPrem…...

43.227.196.1 RAID技术有什么意义?

RAID(Redundant Array of Inexpensive Disks)技术是一种数据存储技术,它通过将多个硬盘组合在一起,来提高数据存储的性能、可靠性和容错性。 RAID技术的主要意义包括: 提高数据读写性能:RAID技术可以将多…...

c++ qt--信号与槽(一) (第三部分)

c qt–信号与槽(一) (第三部分) 一.用qt自带的方法添加信号槽 1.第一种 1.如何添加 2.在何处进行绑定 2.第二种 1.如何添加 2.在何处进行绑定 而且会在mainwindow.h中添加槽函数的声明,在mainwindow.cpp中添加槽函数的定义 在mainwindow…...

LLM学习《Prompt Engineering for Developer》

Prompt 如何构造好的Prompt 分割符&#xff1a;分隔符就像是 Prompt 中的墙&#xff0c;将不同的指令、上下文、输入隔开&#xff0c;避免意外的混淆。你可以选择用 &#xff0c;“”"&#xff0c;< >&#xff0c; &#xff0c;: 等做分隔符&#xff0c;只要能明确…...

nginx-获取客户端IP地址

上有服务器与客户端中间是有nginx代理服务器的&#xff0c;上游服务器如何获取客户端真实ip地址&#xff1f; nginx代理服务器设置X-Forwarded-For的header参数&#xff0c;代理服务器通过remote_addr获取客户端ip地址&#xff0c;将ip地址写入nginx代理服务器的X-Forwarded-Fo…...

Redis 高可用之集群搭建和数据分片

Redis 高可用之集群搭建和数据分片 一、简介1. Redis 集群&#xff1a;2. 集群搭建&#xff1a; 二、Redis 集群搭建1. 单机 Redis 升级为 Redis Clustera. 搭建方法b. 搭建方式说明 2. 环境准备3. 配置修改4. 启动集群 三、Redis数据分片的实现Redis数据分片概念说明数据分片的…...

兄弟,王者荣耀的段位排行榜是通过Redis实现的?

目录 一、排行榜设计方案1、数据库直接排序2、王者荣耀好友排行 二、Redis实现计数器1、什么是计数器功能&#xff1f;2、Redis实现计数器的原理&#xff08;1&#xff09;使用INCR命令实现计数器&#xff08;2&#xff09;使用INCRBY命令实现计数器 三、通过Redis实现“王者荣…...

Linux系统编程--文件编程--打开创建文件

创建文件需要包含以下3个头文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 打开、创建文件有以下3个API open的返回值——文件描述符&#xff08;索引作用&#xff09;&#xff0c;是一个小的非负整数 int open(const char*pathn…...

http协议与apache

http概念&#xff1a; 互联网&#xff1a;是网络的网络&#xff0c;是所有类型网络的母集 因特网&#xff1a;世界上最大的互联网网络。即因特网概念从属于互联网概念 万维网&#xff1a;万维网并非某种特殊的计算机网络&#xff0c;是一个大规模的、联机式的信息贮藏库&…...

搜索二叉树的算法解析与实例演示

目录 一.搜索二叉树的特性与实现1.特点2.实现二.搜索二叉树的性能 一.搜索二叉树的特性与实现 1.特点 二叉搜索树是特殊的二叉树&#xff0c;它有着更严格的数据结构特点&#xff1a; &#xff08;1&#xff09;非空左子树的所有键值小于其根结点的键值。 &#xff08;2&…...

研磨设计模式day13组合模式

目录 场景 不用模式实现 代码实现 有何问题 解决方案 代码改造 组合模式优缺点 思考 何时选用 场景 不用模式实现 代码实现 叶子对象 package day14组合模式;/*** 叶子对象*/ public class Leaf {/*** 叶子对象的名字*/private String name "";/**…...

Linux命令(73)之zip

linux命令之zip 1.zip介绍 linux命令zip是用来压缩文件及解压缩文件名称后缀为".zip"的文件 2.zip用法 zip [参数] filename[.zip] zip常用参数 参数说明-r压缩递归处理-d从压缩文件内删除指定的文件-T检查备份文件是否正确无误-u更换较新的文件到压缩文件内-q不…...

深入理解Reactor模型的原理与应用

1、什么是Reactor模型 Reactor意思是“反应堆”&#xff0c;是一种事件驱动机制。 和普通函数调用的不同之处在于&#xff1a;应用程序不是主动的调用某个 API 完成处理&#xff0c;而是恰恰相反&#xff0c;Reactor逆置了事件处理流程&#xff0c;应用程序需要提供相应的接口并…...

微信小程序开发的投票评选系统设计与实现

摘要 越来越多信息化融入到我们生活当中的同时&#xff0c;也在改变着我们的生活和学习方式&#xff0c;当然&#xff0c;变化最明显的除了我们普通民众之外&#xff0c;要数高校学生的生活方式以及校园信息化的变革。智慧是改变生活和生产的一种来源&#xff0c;那么智慧的体…...

【校招VIP】算法考点之堆排

考点介绍&#xff1a; 排序算法属于数据结构和算法的基础内容&#xff0c;并且也是大厂笔试中的高频考点。 堆排序是使用一棵树存储序列这个课树只保证跟节点是这棵树中的最小值&#xff0c;但并不保证其他节点是按顺序的。因此他的排序是每次从堆中取得堆顶&#xff0c;取得 n…...

关于yarn安装时报“node“ is incompatible with this module的解决办法

前提&#xff1a; 在用vue写一个h5页面时&#xff0c;当在用yarn安装时&#xff0c;提示如下错误&#xff1a; The engine “node” is incompatible with this module. Expected version "^14.18.0 || ^16.14.0 || >18. 解决办法 我是使用命令忽略错误&#xff1a…...

开源利器推荐:美团动态线程池框架的接入分享及效果展示

前言 蛮早前有些过关于线程池的使用及参数的一些参考配置&#xff0c;有兴趣的可以翻看以前的博文&#xff0c;但终究无法解决线程池的动态监控和实时修改。 以前读过美团早期发布的动态线程池框架的思路相关文章&#xff0c;但想要独自实现不是一件容易的事。 去年&#xff0c…...

Linux目录结构与文件管理 (02)(四)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、查看文件内容 二、创建文件 三、删除文件 四、 移动文件 五、复制文件 六、编辑文件内容 总结 前言 今天是在昨天的基础上继续学习&#xff0c;主要…...

对1GHz脉冲多普勒雷达进行快速和慢速处理生成5个移动目标的距离多普勒图研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

uni.uploadFile上传 PHP接收不到

开始这样&#xff0c;后端$file $request->file(file);接收不到 数据跑到param中去了 去掉Content-Type&#xff0c;就能接收到了 param只剩下...

2023年高教社杯 国赛数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米&#xff0c;宽为12米&…...

Netty简易聊天室

文章目录 本文目的参考说明环境说明maven依赖日志配置单元测试 功能介绍开发步骤 本文目的 通过一个简易的聊天室案例&#xff0c;讲述Netty的基本使用。同时分享案例代码。项目中用到了log4j2&#xff0c;junit5&#xff0c;同时分享这些基础组件的使用。项目中用到了awt&…...

Flutter Cannot run with sound null safety, because the following dependencies

flutter sdk 版本升级到2.0或者更高的版本后&#xff0c;运行之前的代码会报错 Error: Cannot run with sound null safety, because the following dependencies dont support null safety:- package:flutter_swiper- package:flutter_page_indicator- package:transformer_p…...

利用改进的遗传算法(种群隔离与个体迁移)mpi并行解决tsp问题

序 关于tsp问题的概述以及如何使用遗传算法进行求解已经在上一篇文章中说明了&#xff1a;遗传算法解决TSP问题. 但是&#xff0c;作为一种演化算法&#xff0c;遗传算法还存在着许多问题&#xff0c;比如早熟的情况&#xff0c;很容易在算法前期就已经收敛了&#xff0c;大量…...

【C++】—— C++11之线程库

前言&#xff1a; 在本期&#xff0c;我将给大家介绍的是 C11 中新引进的知识&#xff0c;即关于线程库的相关知识。 目录 &#xff08;一&#xff09;线程库的介绍 1、线程库的由来 2、线程库的简单介绍 &#xff08;二&#xff09;线程函数参数 &#xff08;三&#xf…...

wordpress去除相册样式/关键词搜索热度查询

Linux软RAID的实现方式前提软RAID说明软RAID实现mdadm配置示例软RAID测试和修复软RAID管理练习示例创建一个10G可用空间的RAID5。第1步&#xff1a;准备3块 5G 的硬盘。并对其进行分区创建&#xff0c;分区格式为 fd &#xff0c;大小 5G第2步&#xff1a;再增加一块空闲盘第3步…...

从哪些方面做好网站的seo/西安疫情最新数据

问题mysqlbinlog 是将 binlog 解析成可读可执行的 SQL 的重要工具。但解析体积较大的 binlog 时&#xff0c;如何查看 mysqlbinlog 的执行进度就变成了一个问题&#xff0c;mysqlbinlog 并未提供 –progress 这样的参数。那要怎么查看 mysqlbinlog 的解析进度&#xff1f;实验我…...

国外有哪些网站做推广的比较好/百度人工客服电话24小时

ESMap-Indoor-navigation ESMapHtml5SpringBootFastDFS实现导航导购Appgithub链接&#xff1a;https://github.com/ShimmerPig... 项目实现的简要概述 服务器部分 测试阶段使用的是双系统的开发模式&#xff0c;在Linux服务器上部署了轻量级分布式文件系统fastdfs&#xff0c;且…...

wordpress广告从哪获取/网络营销方式与工具有哪些

https://blog.csdn.net/hanchao5272/article/details/79435730 git log 退出方法&#xff1a; 英文状态下按Q...

商城网站建设流程图/如何查询百度收录情况

语法 switch(n) { case 1:执行代码块 1break; case 2:执行代码块 2break; default:n 与 case 1 和 case 2 不同时执行的代码 }工作原理&#xff1a;首先设置表达式 n&#xff08;通常是一个变量&#xff09;。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配&am…...

为推广网站做的宣传活动/搜索引擎优化seo应用

浮动的特点 1.脱离文档流 2.浮动元素会脱离文档流并向左/向右浮动&#xff0c;直到碰到父元素或另一个浮动元素 3.会导致父元素高度坍塌 早期为实现文字环绕效果 清除浮动 一个常用的clearfix清除浮动方法&#xff1a; .clearfix:before,//befor以解决现代浏览器上边距折叠的问…...