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

大厂面试题备份20250131

20250131

模型压缩怎么做?除了知识蒸馏

模型压缩是为了减少深度学习模型的计算和存储需求,提高推理效率。除了知识蒸馏,常见的模型压缩方法包括:

1. 剪枝(Pruning)

  • 非结构化剪枝(Unstructured Pruning):去掉权重较小的个别参数(稀疏化)。
  • 结构化剪枝(Structured Pruning):剪掉整个神经元、卷积核或通道,提高硬件加速效率。
  • 门控剪枝(L0 Regularization, Lottery Ticket Hypothesis):训练过程中使用L0正则化或寻找子网络。

2. 量化(Quantization)

  • 权重量化(Weight Quantization):把32-bit浮点数转换为8-bit、4-bit或更低的整数,提高存储和计算效率。
  • 激活量化(Activation Quantization):对中间激活值进行低比特表示。
  • 后训练量化(PTQ, Post-Training Quantization):训练完后量化,如TensorRT、TensorFlow Lite等工具支持。
  • 量化感知训练(QAT, Quantization-Aware Training):在训练时模拟量化误差,效果更优。

3. 低秩分解(Low-Rank Approximation)

  • SVD分解(Singular Value Decomposition):对权重矩阵进行低秩近似分解,减少计算量。
  • Tensor分解(CP分解, Tucker分解):对高维张量进行分解,如CP-decomposition、Tucker decomposition。

4. 算子融合(Operator Fusion)

  • 将多个连续的算子(如BatchNorm + Conv, Conv + ReLU)合并,减少计算开销。

5. 模型架构优化

  • 设计更轻量的网络,如MobileNet、EfficientNet、ShuffleNet。
  • 使用深度可分离卷积(Depthwise Separable Convolution)、分组卷积(Grouped Convolution)、动态卷积(Dynamic Convolution)等高效算子。

6. 剪枝 + 量化 + 知识蒸馏的组合方法

  • 例如Tencent NCNN、Facebook's QNNPACK、Google EdgeTPU等,都会结合多种方法进一步优化推理速度。

如果你的目标是特定硬件优化(如手机、边缘设备、服务器),可以选择合适的工具链,比如:

  • TensorRT(NVIDIA GPU)
  • TVM / Apache MLC(通用加速)
  • TensorFlow Lite(移动端)
  • OpenVINO(Intel CPU/FPGA)
  • ONNX Runtime(通用优化)

对不定长的序列怎么处理,pad

1. Padding(填充)

适用于批处理(batch training/inference),使所有序列长度一致。

1.1. 固定长度填充(Padding to Max Length)
  • 选择一个最大序列长度 max_len,然后对所有序列:
    • 短序列填充(padding):使用特殊标记(如<PAD>,或者数值 0)补齐。
    • 长序列截断(truncation):超过 max_len 的部分裁剪掉。

📌 适用场景

  • NLP 任务(LSTM, Transformer等)。
  • CNN 处理文本(如TextCNN)。
  • 需要固定形状的输入(如TensorRT优化)。

📌 缺点

  • 过长的 max_len 浪费计算资源。
  • 过短的 max_len 会截断信息,损失精度。

2. Masking(掩码)

padding 会带来无意义的填充数据,为了让模型忽略填充部分,我们使用 masking

  • 在 NLP 任务中(Transformer, BERT 等),通常使用 Attention Mask
  • 在 RNN 任务(LSTM/GRU)中,可以使用 PackedSequence 来跳过填充。

📌 适用场景

  • Transformer、BERT等使用 attention_mask 避免关注 <PAD>
  • LSTM/GRU 处理变长序列时使用 PackedSequence

3. Bucketting(动态分批)

如果 padding 过多,计算效率会下降,可以使用 bucket 分组:

  • 按序列长度分成多个批次(buckets),每个 bucket 内的序列长度接近。
  • 例如,长度 [5, 10, 20] 可能分成 3 组,分别处理。

📌 适用场景

  • 需要减少 padding 计算浪费的 NLP 任务。
  • Transformer、LSTM 训练时提高效率。

📌 缺点

  • 实现较复杂,可能增加 batch 之间的不同步性。

4. Sliding Window(滑动窗口)

对于超长序列,可以分片处理:

  • 固定窗口(Fixed Window):取 max_len 长度的子序列。
  • 滑动窗口(Sliding Window with Overlap):滑动窗口并添加重叠部分,减少截断信息损失。

📌 适用场景

  • 处理超长文本(例如BERT通常只能处理512个token)。
  • 语音、视频等长序列任务。

5. Auto-regressive(自回归处理)

对于序列预测(如GPT-3、RNN生成任务),可以逐步生成下一个 token 而不需要 padding

📌 适用场景

  • 语言模型(GPT-3, LLaMA)。
  • 生成任务(Seq2Seq, 机器翻译)。

一个batch的数据长度方差比较大或者大部分pad为0,非常稀疏,排序的时候把等长的排到一块,怎么处理

如果一个 batch 内数据长度方差大,或者 大部分 padding 为 0(稀疏),可以使用 动态分批(Bucketing)排序后分批(Sort & Pack) 来减少 padding 带来的计算开销。以下是几种方法:


1. Sort & Pack(按长度排序+批处理)

💡 思路

  • 先按序列长度排序,让相近长度的样本排在一起。
  • 再按 batch 划分,同一批次的样本长度接近,减少 padding 计算浪费。
  • LSTM/GRU 使用 PackedSequence,避免无效计算。

📌 适用场景

  • 适用于 RNN(LSTM/GRU),但 Transformer 也可以用来减少 padding
  • 尤其适用于 变长文本、时间序列任务

📌 优点

  • 减少 padding 计算浪费,更高效。
  • 适用于 LSTM/GRU 变长输入,避免填充数据的干扰。

📌 缺点

  • 需要额外排序操作,可能会导致训练时 batch 不均衡(影响梯度计算)。

2. Bucketing(动态分批)

💡 思路

  • 按长度区间划分多个 buckets,然后每个 bucket 里 batch 处理,减少 padding
  • 例如,长度 [5, 10, 20] 分成 3 组,这样每个 batch 内序列长度接近。

📌 适用场景

  • NLP(Transformer, BERT)
  • 语音处理(Wav2Vec)
  • 时间序列(变长 sensor data)

📌 优点

  • 减少 padding 计算开销,提高效率。
  • 适用于 Transformer/BERT,减少 attention mask 计算。

📌 缺点

  • 需要手动分 bucket,代码复杂度增加。
  • Bucket 内仍然可能有少量 padding

3. Dynamic Padding(自适应填充)

💡 思路

  • 对每个 batch 选择 max_length 而不是全局 max_len,这样 padding 只影响当前 batch。

📌 适用场景

  • Transformer / CNN 任务
  • 适用于 小 batch,减少 padding 但仍然支持 batch 计算。

📌 优点

  • 相比全局 padding,减少冗余计算
  • 适用于 Transformer、CNN

📌 缺点

  • 仍然会有部分 padding,但比固定 max_len 好。

自回归和自编码的优缺点对比

自回归(Autoregressive, AR)自编码(Autoencoder, AE)是两种不同的模型架构,各自适用于不同的任务。它们的核心区别在于数据的处理方式:

  • 自回归(AR):通过历史数据递归预测下一个数据点,通常用于序列建模、语言建模、时间序列预测等任务。
  • 自编码(AE):学习输入数据的低维表示(编码),然后通过解码器重建输入,通常用于降维、特征学习、异常检测等任务。

🔹 自回归(Autoregressive, AR)

💡 思路

  • 当前时刻的数据依赖于过去的观测值,通过历史信息逐步预测下一个时间步。
  • 生成数据时,按照时间顺序一个一个生成,无法并行化

📌 代表模型

  • 传统AR模型:AR, ARMA, ARIMA(时间序列预测)
  • 深度学习AR模型
    • NLP:RNN, LSTM, GRU, Transformer-Decoder(GPT, BART)
    • 计算机视觉:PixelRNN, PixelCNN(逐步生成图像)
    • 时间序列:WaveNet(音频生成)

✅ 优点

适用于生成任务(文本、语音、时间序列、图像)
可以处理变长输入,适合序列预测
直观的因果关系(因变量仅依赖过去的信息)
易于与注意力机制结合(如 Transformer-Decoder)

❌ 缺点

推理时序列生成是逐步进行的,无法并行化(影响推理速度)
长期依赖问题:RNN、LSTM 在长序列上可能丢失信息(可用 Transformer 解决)
对噪声敏感:前面预测的误差会累积到后面的预测


🔹 自编码(Autoencoder, AE)

💡 思路

  • 将输入压缩成低维编码,然后尝试解码恢复原始输入不依赖时间先后顺序

  • 自编码器的目标是最小化重构误差,通常用于特征学习、降维、数据去噪等任务。

📌 代表模型

  • 基本自编码器(AE):普通 MLP 结构
  • 变分自编码器(VAE):隐空间带有概率分布约束(用于生成任务)
  • 去噪自编码器(Denoising AE):输入加噪音,学习降噪特征
  • 对抗自编码器(Adversarial AE, AAE):结合 GAN 训练隐变量分布
  • Transformer-based AE:BERT(双向 Transformer 自编码结构)

✅ 优点

训练时可以并行化(不像自回归那样依赖前序信息)
适用于无监督学习,可用于降维、异常检测、数据去噪
能学习数据的全局表征(不像 AR 只能建模局部依赖)
适用于静态数据(如图像、表格数据)

❌ 缺点

不适合自回归任务,无法生成有时间依赖关系的序列
隐变量 z 可能难以解释(VAE 试图改进这一点)
可能会丢失重要信息(特别是当编码维度较小时)

 

什么时候用 AR,什么时候用 AE?

用自回归(AR)

  • 语言模型(GPT-3, Transformer-Decoder)
  • 时间序列预测(LSTM, ARIMA)
  • 语音合成(WaveNet)
  • 逐步生成图像(PixelCNN)

用自编码(AE)

  • 图像降维、去噪(Denoising AE)
  • 异常检测(基于重构误差)
  • 生成模型(VAE,用于隐变量建模)
  • 预训练 NLP(BERT, Masked Language Model)

🔹 结合两者:变分自编码器 + 自回归(VAE + AR)

有些模型结合了 自编码器(AE)和自回归(AR),比如:

  • VAE-GPT:VAE 提取全局信息,GPT 生成序列。
  • Hierarchical VAE:VAE 提取长时间依赖特征,AR 生成短时间序列。
  • BERT + GPT:BERT 预训练词表示(AE 方法),GPT 进行自回归生成。

🔹 总结

如果你要做 时间序列预测、文本生成、语音生成用自回归(AR)
如果你要做 降维、特征提取、异常检测、去噪用自编码(AE)
如果你想结合两者,可以考虑 VAE+AR 结构 来既学习表征,又进行序列生成。

怎么把自回归和非自回归的结合起来?

结合自回归(Autoregressive, AR)非自回归(Non-Autoregressive, NAR)的方法,主要是为了兼顾生成质量和推理速度。自回归方法生成质量高但推理慢,而非自回归方法可以并行化生成但可能有信息丢失。以下是几种常见的结合策略:


🔹 1. 混合自回归与非自回归(Hybrid AR-NAR)

💡 思路

  • 先使用 非自回归模型 生成一个初步的结果(粗略预测)。
  • 再用 自回归模型 进行细化或纠正(Refinement)。
  • 这样可以提升推理速度,同时保持较好的生成质量

📌 典型模型

  • Transformer with AR & NAR Decoding(如 Levenshtein Transformer)
  • VAE + AR(VAE-GPT, VQVAE):VAE 生成全局语义信息,GPT 负责局部细化。

📌 示例:Levenshtein Transformer

  • 先用 非自回归方法 生成一个初始序列。
  • 之后用 自回归方法 进行插入、删除或修改。
  • 这样比完全自回归快,又比完全非自回归准确。

📌 适用场景

  • 文本生成(NAT + AR Refinement)
  • 语音生成(VQ-VAE + AR)
  • 时间序列预测(NAR 预测全局趋势,AR 细化局部模式)

🔹 2. 半自回归(Semi-Autoregressive, SAR)

💡 思路

  • 将序列分成小块(chunks),块内并行解码,块间自回归解码。
  • 例如:对 10 个 token,先生成 2 个,然后自回归填充剩下的

📌 典型模型

  • Semi-AR Transformer:每次预测多个 token,而不是一个。
  • BERT2GPT:BERT(非自回归)用于编码,GPT(自回归)用于解码。

🔹 3. 自回归初始化 + 非自回归优化

💡 思路

  • 先用 自回归模型生成一个初始序列(高质量)。
  • 再用 非自回归模型并行优化整个序列

📌 典型模型

  • Mask-Predict(非自回归 + 蒙版优化)
  • Diffusion Model(如 DALLE, Imagen):逐步去噪,而不是严格自回归。

📌 示例:Mask-Predict

  1. 先用 AR 生成一个粗略序列。
  2. 非自回归模型 预测哪些 token 需要修改。
  3. 重新填充这些 token,提升质量。

📌 适用场景

  • 机器翻译(NAT + AR 纠错)
  • 文本生成(GPT 先生成,BERT 后优化)
  • 图像生成(先用 VQVAE 生成全局结构,再用扩散模型优化)

🔹 4. 隐变量建模(VAE / VQVAE + AR)

💡 思路

  • 用自编码器(AE / VAE / VQVAE)生成全局特征,再用自回归方法填充细节
  • 这样可以既有全局一致性,又有局部精准性

📌 典型模型

  • VQ-VAE + AR(PixelSNAIL, VQVAE-GPT):VQVAE 提供全局结构,AR 生成细节。
  • VAE-GPT:VAE 生成高层语义,GPT 生成具体句子。

📌 示例:VQ-VAE + Transformer

  • 第一步:VQ-VAE 压缩输入数据(提取全局特征)。
  • 第二步:Transformer 以自回归方式解码。

📌 适用场景

  • 图像生成(DALLE, VQVAE-GPT)
  • 音频生成(WaveNet, VQ-VAE + AR)
  • 文本摘要(VAE + GPT)

🔹 5. 结合对抗训练(GAN + AR)

💡 思路

  • 用 GAN 训练一个快速的非自回归生成器,然后用自回归模型来增强对抗训练
  • 例如:
    • 生成器(非自回归) 生成完整序列。
    • 判别器(自回归) 评估该序列是否真实。

📌 典型模型

  • SeqGAN(GAN + LSTM AR 训练)
  • MaskGAN(BERT-style GAN)

📌 适用场景

  • 文本生成(避免 AR 误差累积)
  • 代码生成(优化长文本)
  • 游戏 AI(快速生成行动序列)

🔹 6. 结合 Transformer 的双模式(BERT + GPT)

💡 思路

  • 训练时使用 BERT(非自回归)学习表示,推理时用 GPT(自回归)进行生成。
  • 这样既能并行训练,提高效率,又能自回归生成,保证质量

📌 典型模型

  • BART(BERT 预训练 + GPT 生成)
  • T5(编码器 + 自回归解码器)

📌 适用场景

  • 文本摘要(先编码,后自回归生成)
  • 对话系统(先理解,后生成)
  • 代码补全(理解上下文,补全代码)

怎么理解静态mask和动态mask

静态 Mask(Static Mask) vs. 动态 Mask(Dynamic Mask)

在**深度学习(特别是 Transformer 相关模型)**中,Mask 主要用于控制模型对输入数据的访问方式,防止信息泄露或引导模型学习某些特定模式。静态 Mask 和动态 Mask 是两种不同的 Mask 机制,理解它们的区别有助于优化模型的训练和推理。


🔹 1. 静态 Mask(Static Mask)

💡 定义

  • Mask 在训练前就已经固定,不会随着输入数据的变化而调整。
  • 适用于固定的任务,如语言模型预训练(BERT)、填空任务(Cloze task)、图像掩码等。
  • 相同输入的 Mask 方式始终一致

📌 典型应用

  • BERT(Masked Language Model, MLM):在训练时,随机 Mask 一部分 Token,并在解码时预测这些 Token。
  • 自注意力中的 Padding Mask
    • 在 Transformer 里,填充的 <PAD> Token 需要 Mask 掉,以免影响注意力计算。
    • 例子[Hello, world, <PAD>, <PAD>],其中 <PAD> 部分会被静态 Mask。

  • 这里 [MASK]训练前就固定 下来的,不随数据变化。

📌 优点高效:可以在训练前设定 Mask 规则,不需要额外计算。
稳定:适用于预训练任务,如 BERT 这种基于 Mask 预测的模型。

📌 缺点缺乏灵活性:如果任务需要根据输入情况动态调整 Mask,则静态 Mask 无法适应。
对自回归任务支持不佳:如 GPT 这类序列生成任务,需要随时间步调整 Mask。


🔹 2. 动态 Mask(Dynamic Mask)

💡 定义

  • Mask 不是固定的,而是根据输入数据动态计算
  • 适用于依赖上下文信息的任务,如自回归生成、注意力控制等。
  • 不同输入的 Mask 方式可能不同

📌 典型应用

  • Transformer 解码器中的因果 Mask(Causal Mask)

    • 在自回归模型(如 GPT)中,当前 Token 只能看到之前的 Token,不能看到未来 Token。

  • 解释:第 t 个 Token 只能看到前 t 个 Token,后面的全 Mask 掉。
  • 非自回归生成(NAT, Mask-Predict)

    • 先用一个初始 Mask 生成整个序列(非自回归),再动态 Mask 一部分,逐步优化生成结果。
    • 不同步骤 Mask 规则不同,随着推理过程不断变化。

  • 这里的 Mask 是动态变化的,随时间步扩展。

📌 优点灵活:Mask 方式可以根据当前输入动态调整。
适用于自回归任务:如 GPT、Transformer-Decoder 等模型。

📌 缺点计算量大:需要在每个时间步计算 Mask,会增加计算开销。
实现复杂:需要动态控制 Mask 逻辑,适用于生成任务但不适用于静态任务。

🔹 4. 结合静态 Mask 和动态 Mask

在实际任务中,我们通常结合使用静态 Mask 和动态 Mask,比如:

  • BERT 训练:使用静态 Mask 进行 MLM 任务。
  • GPT 训练:使用动态 Mask 来实现自回归序列生成。
  • NAT 生成:先静态 Mask 部分 Token,然后动态调整 Mask 以优化预测结果。

📌 示例:BART(BERT + GPT 结合)

  1. 编码阶段(静态 Mask)
    • 先用 静态 Mask 随机 Mask 掉一部分 Token 进行编码。
  2. 解码阶段(动态 Mask)
    • 生成时使用 动态 Mask 控制 Token 生成顺序(因果 Mask)。

这样,我们既能利用静态 Mask 进行高效训练,又能利用动态 Mask 进行高质量生成。


🔹 5. 什么时候用哪种 Mask?

用静态 Mask(Static Mask)

  • 训练固定任务(如 MLM,填充 Mask)。
  • 任务对 Mask 方式没有动态变化需求
  • 需要加速计算,避免额外 Mask 计算开销

用动态 Mask(Dynamic Mask)

  • 需要自回归生成(如 GPT,NAT,因果 Mask)。
  • 需要根据输入数据动态调整 Mask(如 Mask-Predict)。
  • 任务的 Mask 方式随时间步或序列位置改变

🔹 总结

如果你的任务是预训练 BERT 或填充 Mask,用静态 Mask更高效。
如果你的任务是文本生成或自回归预测,用动态 Mask更合适。
如果你在做非自回归生成,可以先用静态 Mask 初始化,再用动态 Mask 进行优化!🚀

机器学习,HMM和SVD有了解吗?

2. 数学原理

🔹 HMM(隐马尔可夫模型)

HMM 是基于概率的模型,假设一个系统由**隐状态(Hidden States)观测状态(Observations)**组成。
其基本要素:

  1. 状态转移矩阵 AAA:描述隐状态之间的转移概率。
  2. 观测概率矩阵 BBB:描述在某个隐状态下,生成某个观测值的概率。
  3. 初始状态分布 π\piπ:描述系统开始时的隐状态分布。

HMM 通过前向-后向算法、维特比算法、Baum-Welch 算法进行训练和推理。

🔹 SVD(奇异值分解)

相关文章:

大厂面试题备份20250131

20250131 模型压缩怎么做&#xff1f;除了知识蒸馏 模型压缩是为了减少深度学习模型的计算和存储需求&#xff0c;提高推理效率。除了知识蒸馏&#xff0c;常见的模型压缩方法包括&#xff1a; 1. 剪枝&#xff08;Pruning&#xff09; 非结构化剪枝&#xff08;Unstructur…...

(三)QT——信号与槽机制——计数器程序

目录 前言 信号&#xff08;Signal&#xff09;与槽&#xff08;Slot&#xff09;的定义 一、系统自带的信号和槽 二、自定义信号和槽 三、信号和槽的扩展 四、Lambda 表达式 总结 前言 信号与槽机制是 Qt 中的一种重要的通信机制&#xff0c;用于不同对象之间的事件响…...

玩转大语言模型——配置图数据库Neo4j(含apoc插件)并导入GraphRAG生成的知识图谱

系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型——使用GraphRAGOllama构建知识图谱 玩转大语言模型——完美解决Gra…...

从0开始,来看看怎么去linux排查Java程序故障

一&#xff0c;前提准备 最基本前提&#xff1a;你需要有liunx环境&#xff0c;如果没有请参考其它文献在自己得到local建立一个虚拟机去进行测试。 有了虚拟机之后&#xff0c;你还需要安装jdk和配置环境变量 1. 安装JDK&#xff08;以OpenJDK 17为例&#xff09; 下载JDK…...

Java实现LFU缓存策略实战

LFU算法原理在Java中示例实现集成Caffeine的W-TinyLFU策略缓存实战总结LFU与LRU稍有不同,LFU是根据数据被访问的频率来决定去留。尽管它考虑了数据的近期使用,但它不会区分数据的首次访问和后续访问,淘汰那些访问次数最少的数据。 这种缓存策略主要用来处理以下场景: 数据…...

LeetCode--84. 柱状图中最大的矩形【单调栈】

84. 柱状图中最大的矩形 正文 题目如下 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 这道题暴力很简单&#xff0c;但是时间复杂度是O(N^2)&#xf…...

感悟人生路

匆匆复匆匆&#xff0c;新春时光沙漏里&#xff0c;过了又来&#xff0c;只是那时和此时。累了&#xff0c;行过百公里&#xff0c;灯光交汇处&#xff0c;都是向往幸福之所。一路长虹&#xff0c;速度跟上节奏&#xff0c;福祉盈门&#xff0c;出入平安。​ 跨越时空&#xff…...

Autogen_core源码:_agent_instantiation.py

目录 _agent_instantiation.py代码代码解释代码示例示例 1&#xff1a;使用 populate_context 正确设置上下文示例 2&#xff1a;尝试在上下文之外调用 current_runtime 和 current_agent_id示例 3&#xff1a;模拟 AgentRuntime 使用 AgentInstantiationContext _agent_instan…...

开源智慧园区管理系统如何重塑企业管理模式与运营效率

内容概要 在如今快速发展的商业环境中&#xff0c;企业面临着日益复杂的管理挑战。开源智慧园区管理系统应运而生&#xff0c;旨在通过技术创新来应对这些挑战。它不仅是一个简单的软件工具&#xff0c;而是一个全面整合大数据、物联网和智能化功能的综合平台&#xff0c;为企…...

网络工程师 (9)文件管理

一、树形目录结构 &#xff08;一&#xff09;定义与构成 树形目录结构由一个根目录和若干层子文件夹&#xff08;或称为子目录&#xff09;组成&#xff0c;它像一棵倒置的树。这棵树的根称为根文件夹&#xff08;也叫根目录&#xff09;&#xff0c;从根向下&#xff0c;每一…...

Java小白入门教程:内置数据类型(四类八种)和引用数据类型

目录 一、内置数据类型&#xff08;四类八种&#xff09; 1. 整数类型&#xff08;四种子类型&#xff09; 2. 浮点类型&#xff08;两种子类型&#xff09; 3. 字符类型&#xff08;一种子类型&#xff09; 4. 布尔类型&#xff08;一种子类型&#xff09; 二、引用数据类…...

pytorch图神经网络处理图结构数据

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 图神经网络&#xff08;Graph Neural Networks&#xff0c;GNNs&#xff09;是一类能够处理图结构数据的深度学习模型。图结构数据由节点&#xff08;vertices&#xff09;和边&#xff08;edges&#xff09;组成&a…...

CRC校验详解

CRC校验即循环冗余校验(Cyclic Redundancy Check),是基于数据计算一组效验码,用于核对数据传输过程中是否被更改或传输错误。首先看两个概念,后续会用到。 模2除法:也叫模2运算,就是结果除以2后取余数。模2除法每一位除的结果不影响其它位,即不向上一位借位,所以实际…...

使用where子句筛选记录

默认情况下,SearchCursor将返回一个表或要素类的所有行.然而在很多情况下,常常需要某些条件来限制返回行数. 操作方法: 1.打开IDLE,加载先前编写的SearchCursor.py脚本 2.添加where子句,更新SearchCursor()函数,查找记录中有<>文本的<>字段 with arcpy.da.Searc…...

人工智能导论--第1章-知识点与学习笔记

请根据教材内容&#xff0c;完成进行下面的作业任务。必须包含有教材的具体内容&#xff0c;不能是生成式AI系统的生成内容。 参考教材1.1节的内容介绍&#xff0c;谈谈你对“智能”的认识。思维能力是智能的重要特征之一&#xff0c;结合教材1.1.2节内容&#xff0c;从思维的…...

半导体SAP管理系统:数字化转型的驱动力

在当今全球科技竞争日益激烈的背景下&#xff0c;半导体行业作为信息技术的基石&#xff0c;其生产效率、质量控制和成本优化直接关系到企业的市场竞争力和可持续发展。随着数字化转型的深入&#xff0c;半导体企业纷纷寻求高效、智能的管理系统以提升运营效率。SAP管理系统&am…...

Cursor 简介:AI 如何改变编程体验

在软件开发领域&#xff0c;效率和质量始终是开发者们追求的目标。随着人工智能技术的飞速发展&#xff0c;编程工具也在不断进化&#xff0c;Cursor 便是这一趋势下的产物。它不仅仅是一个代码编辑器&#xff0c;更是一个集成了 AI 能力的智能编程助手&#xff0c;旨在通过 AI…...

苯乙醇苷类化合物的从头生物合成-文献精读108

Complete pathway elucidation of echinacoside in Cistanche tubulosa and de novo biosynthesis of phenylethanoid glycosides 管花肉苁蓉中松果菊苷全生物合成途径解析及苯乙醇苷类化合物的从头生物合成 摘要 松果菊苷&#xff08;ECH&#xff09;是最具代表性的苯乙醇苷…...

CSS:跑马灯

<div class"swiper-container"><div class"swiper-wrapper"><!-- 第一组 --><div class"item" v-for"item in cardList" :key"first-item.id"><img :src"item.image" alt""…...

简单的爱心跳动表白网页(附源码)

一&#xff1a;准备工作 在开始之前&#xff0c;确保已经具备基础的 HTML、CSS 和 JavaScript 知识。同时&#xff0c;也要准备好一个代码编辑器&#xff0c;比如 VS Code 或 Sublime Text。接下来&#xff0c;我们需要创建三个文件&#xff1a;index.html、styles.css 和 scr…...

遗传算法【Genetic Algorithm(GA)】求解函数最大值(MATLAB and Python实现)

一、遗传算法基础知识 来自B站视频的笔记&#xff1a; 【超容易理解】手把手逐句带你解读并实现遗传算法的MATLAB编程&#xff08;结合理论基础&#xff09;_哔哩哔哩_bilibili 1、遗传算法 使用“适者生存”的原则&#xff0c;在遗传算法的每一代中&#xff0c;…...

HTB:Administrator[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用nmap对靶机…...

正则表达式中常见的贪婪词

1. * 含义&#xff1a;匹配前面的元素零次或者多次。示例&#xff1a;对于正则表达式 a*&#xff0c;在字符串 "aaaa" 中&#xff0c;它会匹配整个 "aaaa"&#xff0c;因为它会尽可能多地匹配 a 字符。代码示例&#xff08;Python&#xff09;&#xff1a…...

高阶C语言|深入理解字符串函数和内存函数

文章目录 前言1.求字符串长度1.1 字符串长度函数&#xff1a;strlen模拟实现 2.长度不受限制的字符串函数2.1 字符串拷贝函数&#xff1a;strcpy模拟实现 2.2 字符串连接函数&#xff1a;strcat模拟实现 2.3 字符串比较函数&#xff1a;strcmp模拟实现 3.长度受限制的字符串函数…...

grpc 和 http 的区别---二进制vsJSON编码

gRPC 和 HTTP 是两种广泛使用的通信协议&#xff0c;各自适用于不同的场景。以下是它们的详细对比与优势分析&#xff1a; 一、核心特性对比 特性gRPCHTTP协议基础基于 HTTP/2基于 HTTP/1.1 或 HTTP/2数据格式默认使用 Protobuf&#xff08;二进制&#xff09;通常使用 JSON/…...

基于 RAG 的聊天机器人的追踪、日志和指标:结合 Elastic 的 OpenTelemetry 分发

作者&#xff1a;来自 Elastic Bahubali Shetti 如何使用 Elasticsearch 观察基于 OpenAI RAG 的应用程序。使用 OpenTelemetry 对应用程序进行检测&#xff0c;收集日志、跟踪、指标&#xff0c;并了解 LLM 在 Kubernetes 和 Docker 上使用 OpenTelemetry 的 Elastic 分发的表…...

6.二分算法

二分 二分算法&#xff0c;也称为二分查找或折半查找&#xff0c;是一种在有序数组中查找特定元素的高效算法。以下是 C 中二分算法的相关内容&#xff1a; 算法原理 二分算法的基本思想是将有序数组分成两部分&#xff0c;然后将目标值与中间元素进行比较。如果目标值等于中…...

Android Studio 正式版 10 周年回顾,承载 Androider 的峥嵘十年

Android Studio 1.0 宣发于 2014 年 12 月&#xff0c;而现在时间来到 2025 &#xff0c;不知不觉间 Android Studio 已经陪伴 Androider 走过十年历程。 Android Studio 10 周年&#xff0c;也代表着了我的职业生涯也超十年&#xff0c;现在回想起来依然觉得「唏嘘」&#xff…...

“LoRA技术中参数初始化策略:为何A参数采用正态分布而B参数初始化为0”

在LoRA&#xff08;Low-Rank Adaptation&#xff09;中&#xff0c;参数A和B的初始化策略是经过精心设计的&#xff0c;以确保模型训练的稳定性和有效性。具体来说&#xff0c;参数A通常被初始化为正态分布&#xff0c;而参数B则初始化为0。这样的设计有以下几个优点&#xff1…...

PyTorch中的movedim、transpose与permute

在PyTorch中&#xff0c;movedim、transpose 和 permute这三个操作都可以用来重新排列张量&#xff08;tensor&#xff09;的维度&#xff0c;它们功能相似却又有所不同。 movedim &#x1f517; torch.movedim 用途&#xff1a;将张量的一个或多个维度移动到新的位置。参数&…...

灰色预测模型

特点&#xff1a; 利用少量、不完全的信息 预测的是指数型的数值 预测的是比较近的数据 灰色生成数列原理&#xff1a; 累加生成&#xff1a; 累减生成&#xff1a;通过累减生成还原成原始数列。 加权相邻生成&#xff1a;&#xff08;会更接近每月中旬&#xff0c;更推荐…...

Java 16进制 10进制 2进制数 相互的转换

在 Java 中&#xff0c;进行进制之间的转换时&#xff0c;除了功能的正确性外&#xff0c;效率和安全性也很重要。为了确保高效和相对安全的转换&#xff0c;我们通常需要考虑&#xff1a; 性能&#xff1a;使用内置的转换方法&#xff0c;如 Integer.toHexString()、Integer.…...

CPU 100% 出现系统中断 怎么解决

CPU 100% 出现系统中断 怎么解决 电脑开机时会掉帧&#xff0c;切换到桌面时就会卡顿&#xff0c;然后打开任务管理器就会看到系统中断的cpu占用率达到100%&#xff0c;过一段时间再打开还是会有显示100%的占用率&#xff0c;这个问题怎么解决&#xff1f; 文章目录 CPU 100% …...

Python-基于mediapipe,pyautogui,cv2和numpy的电脑手势截屏工具(进阶版)

前言:在我们的日常生活中,手机已经成为我们每天工作,学习,生活的一个不可或缺的部分。众所周知:为了我们的使用方便,手机里面的很多功能非常人性化,既便捷又高效,其中就有手机的截屏方式,它们花样繁多,如三指截屏,手势截屏等。那么怎么在电脑里面也实现这个功能呢?…...

设计转换Apache Hive的HQL语句为Snowflake SQL语句的Python程序方法

首先&#xff0c;根据以下各类HQL语句的基本实例和官方文档记录的这些命令语句各种参数设置&#xff0c;得到各种HQL语句的完整实例&#xff0c;然后在Snowflake的官方文档找到它们对应的Snowflake SQL语句&#xff0c;建立起对应的关系表。在这个过程中要注意HQL语句和Snowfla…...

2025年人工智能技术:Prompt与Agent的发展趋势与机遇

文章目录 一、Prompt与Agent的定义与区别(一)定义(二)区别二、2025年Prompt与Agent的应用场景(一)Prompt的应用场景(二)Agent的应用场景三、2025年Prompt与Agent的适合群体(一)Prompt适合的群体(二)Agent适合的群体四、2025年Prompt与Agent的发展机遇(一)Prompt的…...

[论文总结] 深度学习在农业领域应用论文笔记14

当下&#xff0c;深度学习在农业领域的研究热度持续攀升&#xff0c;相关论文发表量呈现出迅猛增长的态势。但繁荣背后&#xff0c;质量却不尽人意。相当一部分论文内容空洞无物&#xff0c;缺乏能够落地转化的实际价值&#xff0c;“凑数” 的痕迹十分明显。在农业信息化领域的…...

STM32 ADC单通道配置

硬件电路 接线图&#xff1a; ADC基本结构图 代码配置 根据基本结构框图 1.定义结构体变量 //定义结构体变量 GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO结构体变量 ADC_InitTypeDef ADC_InitStructure; //定义ADC结构体变量 2.开启RCC时钟 ADC、GPIO的时钟&#x…...

Go学习:Go语言中if、switch、for语句与其他编程语言中相应语句的格式区别

Go语言中的流程控制语句逻辑结构与其他编程语言类似&#xff0c;格式有些不同。Go语言的流程控制中&#xff0c;包括if、switch、for、range、goto等语句&#xff0c;没有while循环。 目录 1. if 语句 2. switch语句 3. for语句 4. range语句 5. goto语句&#xff08;不常用…...

Day50:字典的合并

在 Python 中&#xff0c;字典是一个可变的数据类型&#xff0c;经常需要将多个字典合并成一个字典。合并字典的方式有多种&#xff0c;今天我们将学习几种常见的方法。 1. 使用 update() 方法合并字典 update() 方法可以用来将一个字典中的键值对添加到另一个字典中。如果目…...

【C++动态规划 离散化】1626. 无矛盾的最佳球队|2027

本文涉及知识点 C动态规划 离散化 LeetCode1626. 无矛盾的最佳球队 假设你是球队的经理。对于即将到来的锦标赛&#xff0c;你想组合一支总体得分最高的球队。球队的得分是球队中所有球员的分数 总和 。 然而&#xff0c;球队中的矛盾会限制球员的发挥&#xff0c;所以必须选…...

LeetCode 热题 HOT 100

你好呀&#xff0c;欢迎来到 Dong雨 的技术小栈 &#x1f331; 在这里&#xff0c;我们一同探索代码的奥秘&#xff0c;感受技术的魅力 ✨。 &#x1f449; 我的小世界&#xff1a;Dong雨 &#x1f4cc; 分享我的学习旅程 &#x1f6e0;️ 提供贴心的实用工具 &#x1f4a1; 记…...

从未标记图像中生成有标记图像特征的半监督分割方法

今天看到一篇文章很有意思&#xff0c;给大家分享一下。现在传统半监督分割网络训练时往往有标注数据与未标注数据分开训练&#xff0c;导致模型不好。这篇文章作者提出了一个很有意思的想法。它通过通道注意力从未标记的特征中重新加载标记的特征。这篇文章是AllSpark。 大家感…...

随笔 | 写在一月的最后一天

. 前言 这个月比预想中过的要快更多。突然回看这一个月&#xff0c;还有点不知从何提笔。 整个一月可以总结为以下几个关键词&#xff1a; 期许&#xff0c;保持期许出现休息 . 期许 关于期许&#xff0c;没有什么时候比一年伊始更适合设立目标和计划的了。但令人惭愧的…...

AI大模型开发原理篇-2:语言模型雏形之词袋模型

基本概念 词袋模型&#xff08;Bag of Words&#xff0c;简称 BOW&#xff09;是自然语言处理和信息检索等领域中一种简单而常用的文本表示方法&#xff0c;它将文本看作是一组单词的集合&#xff0c;并忽略文本中的语法、词序等信息&#xff0c;仅关注每个词的出现频率。 文本…...

DDD - 领域驱动设计分层架构:构建可演化的微服务架构

文章目录 引言1. 什么是DDD分层架构&#xff1f;1.1 DDD分层架构的演变1.2 四层架构的起源与问题1.3 依赖倒置和五层架构 2. DDD分层架构的核心层次2.1 用户接口层&#xff08;User Interface Layer&#xff09;2.2 应用层&#xff08;Application Layer&#xff09;2.3 领域层…...

Spring Boot项目如何使用MyBatis实现分页查询及其相关原理

写在前面&#xff1a;大家好&#xff01;我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正&#xff0c;感谢大家的不吝赐教。我的唯一博客更新地址是&#xff1a;https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油&#xff0c;冲鸭&#x…...

CSS 值和单位详解:从基础到实战

CSS 值和单位详解&#xff1a;从基础到实战 1. 什么是 CSS 的值&#xff1f;示例代码&#xff1a;使用颜色关键字和 RGB 函数 2. 数字、长度和百分比2.1 长度单位绝对长度单位相对长度单位 2.2 百分比 3. 颜色3.1 颜色关键字3.2 十六进制 RGB 值3.3 RGB 和 RGBA 值3.4 HSL 和 H…...

搭建自己的专属AI——使用Ollama+AnythingLLM+Python实现DeepSeek本地部署

前言 最近DeepSeek模型非常火&#xff0c;其通过对大模型的蒸馏得到的小模型可以较轻松地在个人电脑上运行&#xff0c;这也使得我们有机会在本地构建一个专属于自己的AI&#xff0c;进而把AI“调教”为我们希望的样子。本篇文章中我将介绍如何使用OllamaAnythingLLMPython实现…...

【AI绘画】MidJourney关键词{Prompt}全面整理

AI绘画整理&#xff0c;MidJourney关键词。喜欢AI绘画的朋友必备&#xff0c;建议收藏&#xff0c;后面用到时供查阅使用。 1、光线与影子篇 中 英 闪耀的霓虹灯 shimmeringneon lights 黑暗中的影子 shadows in the dark 照亮城市的月光 moonlightilluminatingthe cit…...