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

Transformer 面试题及详细答案120道(91-100)-- 理论与扩展

前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。

前后端面试题-专栏总目录

在这里插入图片描述

文章目录

  • 一、本文面试题目录
      • 91. 证明自注意力机制中,缩放因子(√d_k)可以缓解梯度消失问题
      • 92. 分析Transformer的表达能力:它是否能模拟RNN或CNN的功能
      • 93. 为什么Transformer在并行计算上比RNN更有优势
      • 94. 自注意力机制与图注意力网络(GAT)有何异同
      • 95. Transformer中的“注意力权重”是否一定能反映token间的语义关联
      • 96. 如何可视化Transformer的注意力权重?有哪些工具或方法
      • 97. 探讨Transformer在低资源语言任务中的挑战与解决方案
      • 98. Transformer与强化学习(RL)结合的典型场景有哪些(如RLHF)
      • 99. 什么是“注意力坍塌(Attention Collapse)”?如何避免?
        • 原理说明
        • 避免方法
        • 示例代码(注意力熵正则化)
      • 100. 未来Transformer模型的发展趋势可能有哪些?
        • 原理说明
        • 示例(动态Transformer结构示意)
  • 二、120道Transformer面试题目录列表

一、本文面试题目录

91. 证明自注意力机制中,缩放因子(√d_k)可以缓解梯度消失问题

在自注意力机制中,计算注意力分数时使用点积后除以(\sqrt{d_k})(其中(d_k)是键的维度),这可以缓解梯度消失问题。具体证明如下:

  • 原理说明:随着维度(d_k)的增加,点积的结果会变得很大,这会使softmax函数的输出变得非常尖锐,几乎所有的注意力权重都集中在某个特定的token上。根据softmax函数(y_i=\frac{e{x_i}}{\sum_{j=1}{n}e^{x_j}}),当(x_i)很大时,(y_i)会趋近于1,而其他(y_j)((j\neq i))会趋近于0。这样在反向传播时,梯度会非常小,从而导致梯度消失问题。而除以(\sqrt{d_k})可以使点积结果的方差保持适中,避免softmax函数输出过于尖锐,从而缓解梯度消失问题。
  • 示例代码:以下是一个简单的自注意力机制中计算注意力分数的示例代码,其中包含了缩放因子的使用。
import torchdef scaled_dot_product_attention(q, k, v, mask=None):"""计算缩放点积注意力:param q: 查询矩阵,形状为 (batch_size, num_heads, seq_length, head_dim):param k: 键矩阵,形状为 (batch_size, num_heads, seq_length, head_dim):param v: 值矩阵,形状为 (batch_size, num_heads, seq_length, head_dim):param mask: 掩码矩阵,形状为 (batch_size, 1, 1, seq_length) 或 None:return: 注意力输出,形状为 (batch_size, num_heads, seq_length, head_dim)"""d_k = q.size(-1)# 计算点积attn_scores = torch.matmul(q, k.transpose(-2, -1)) / torch.sqrt(torch.tensor(d_k, dtype=torch.float32))if mask is not None:attn_scores = attn_scores.masked_fill(mask == 0, -1e9)# 计算注意力权重attn_probs = torch.softmax(attn_scores, dim=-1)# 计算注意力输出output = torch.matmul(attn_probs, v)return output

92. 分析Transformer的表达能力:它是否能模拟RNN或CNN的功能

Transformer具有很强的表达能力,可以模拟RNN和CNN的功能。

  • 原理说明
    • 模拟RNN:RNN通过循环结构来处理序列数据,能够捕捉序列中的长期依赖关系。Transformer通过自注意力机制,可以在一步计算中关注到序列中的所有位置,从而能够捕捉到长期依赖关系,在这一点上可以模拟RNN的功能。而且Transformer没有RNN的循环结构,避免了梯度消失和梯度爆炸等问题,能够更好地处理长序列。
    • 模拟CNN:CNN通过卷积核在局部区域上进行卷积操作,来提取局部特征。Transformer中的多头自注意力机制可以通过调整注意力权重,使得模型能够关注到局部区域的token,从而模拟CNN的局部特征提取功能。此外,Transformer还可以通过堆叠多层自注意力层和前馈神经网络层,来增加模型的深度,从而能够学习到更复杂的特征表示,这与CNN通过堆叠多个卷积层和池化层来学习特征的方式类似。
  • 示例代码:以文本分类任务为例,使用Transformer模拟RNN和CNN的功能。
import torch
import torch.nn as nn
import torch.nn.functional as Fclass TransformerForClassification(nn.Module):def __init__(self, vocab_size, d_model, num_heads, num_layers, max_seq_length):super(TransformerForClassification, self).__init__()self.embedding = nn.Embedding(vocab_size, d_model)self.position_encoding = nn.Parameter(torch.zeros(1, max_seq_length, d_model))self.transformer_encoder = nn.TransformerEncoder(nn.TransformerEncoderLayer(d_model, num_heads),num_layers)self.fc = nn.Linear(d_model, 2)  # 假设是二分类任务def forward(self, x):x = self.embedding(x)x = x + self.position_encoding[:, :x.size(1), :]x = self.transformer_encoder(x)x = torch.mean(x, dim=1)x = self.fc(x)return F.log_softmax(x, dim=1)

93. 为什么Transformer在并行计算上比RNN更有优势

Transformer在并行计算上比RNN更有优势的原因如下:

  • 原理说明:RNN的计算过程是顺序的,任意时刻(t)的输入是时刻(t)的输入(x(t))和上一时刻的隐藏层输出(h(t-1)),经过运算后得到当前时刻隐藏层的输出(h(t)),这个(h(t))也即将作为下一时刻(t+1)的输入的一部分。这意味着RNN序列后面的信息只能等到前面的计算结束后,将历史信息通过隐藏状态传递给后面才能开始计算,形成链式的序列依赖关系,无法实现并行。而Transformer在自注意力层,无论序列的长度是多少,都可以一次性计算所有单词之间的注意力关系,这个计算过程是并行的,不需要依赖前面的计算结果,因此可以充分利用GPU等硬件的并行计算能力,大大提高计算效率。
  • 示例代码:以下是一个简单的Transformer自注意力层的并行计算示例代码。
import torchdef self_attention(q, k, v):"""自注意力计算:param q: 查询矩阵,形状为 (batch_size, seq_length, d_model):param k: 键矩阵,形状为 (batch_size, seq_length, d_model):param v: 值矩阵,形状为 (batch_size, seq_length, d_model):return: 注意力输出,形状为 (batch_size, seq_length, d_model)"""d_k = q.size(-1)attn_scores = torch.matmul(q, k.transpose(-2, -1)) / torch.sqrt(torch.tensor(d_k, dtype=torch.float32))attn_probs = torch.softmax(attn_scores, dim=-1)output = torch.matmul(attn_probs, v)return output

在这个代码中,计算注意力分数、注意力权重和注意力输出的过程都是并行进行的,没有顺序依赖。

94. 自注意力机制与图注意力网络(GAT)有何异同

自注意力机制与图注意力网络(GAT)有以下异同点:

  • 原理说明
    • 相同点:两者都基于注意力机制,通过计算节点或token之间的注意力权重来确定它们之间的关联程度,从而能够捕捉到不同元素之间的重要关系。都可以在不同的场景中用于特征提取和表示学习。
    • 不同点:自注意力机制主要用于处理序列数据,输入是一个线性的序列,每个位置的token都与序列中的其他所有token计算注意力权重。而GAT用于处理图结构数据,节点之间的连接关系是由图的拓扑结构决定的,每个节点只与它的邻居节点计算注意力权重。此外,GAT通常需要考虑节点的特征和图的结构信息,而自注意力机制主要关注序列中token的特征。
  • 示例代码
    • 自注意力机制示例代码:见91题答案中的示例代码。
    • 图注意力网络示例代码
import torch
import torch.nn as nn
import torch.nn.functional as Fclass GATLayer(nn.Module):def __init__(self, in_features, out_features, alpha=0.2):super(GATLayer, self).__init__()self.W = nn.Parameter(torch.zeros(size=(in_features, out_features)))nn.init.xavier_uniform_(self.W.data, gain=1.414)self.a = nn.Parameter(torch.zeros(size=(2 * out_features, 1)))nn.init.xavier_uniform_(self.a.data, gain=1.414)self.alpha = alphadef forward(self, h, adj):Wh = torch.mm(h, self.W)a_input = torch.cat([Wh.repeat(1, adj.shape[1], 1), Wh.repeat(adj.shape[1], 1, 1).transpose(0, 1)], dim=2)e = F.leaky_relu(torch.matmul(a_input, self.a).squeeze(2))zero_vec = -9e15 * torch.ones_like(e)attention = torch.where(adj > 0, e, zero_vec)attention = F.softmax(attention, dim=1)h_prime = torch.matmul(attention, Wh)return h_prime

95. Transformer中的“注意力权重”是否一定能反映token间的语义关联

Transformer中的“注意力权重”不一定能完全反映token间的语义关联。

  • 原理说明:注意力权重是通过计算查询向量和键向量的点积,然后经过softmax函数得到的,它主要反映的是两个token在特征空间中的相似程度。虽然在很多情况下,相似的token可能具有相似的语义,但是特征空间中的相似并不一定完全等同于语义上的关联。例如,在一些情况下,模型可能会因为数据的统计特性或者噪声的影响,使得注意力权重集中在一些与语义无关的token上。此外,模型的训练过程也可能会导致注意力权重不能准确地反映语义关联,比如模型可能会过拟合到训练数据中的一些虚假模式,而不是真正的语义关系。
  • 示例代码:暂无直接相关的示例代码,但可以通过分析注意力权重的可视化结果来验证这一点。例如,可以使用下面96题中提到的注意力权重可视化方法,观察注意力权重是否集中在具有语义关联的token上。

96. 如何可视化Transformer的注意力权重?有哪些工具或方法

可视化Transformer的注意力权重可以帮助我们理解模型的行为和决策过程。以下是一些常用的工具和方法:

  • 原理说明:通过将注意力权重以图形化的方式展示出来,比如使用热力图等形式,我们可以直观地看到每个token与其他token之间的注意力权重大小,从而分析模型在处理输入序列时关注的重点区域。
  • 示例代码
    • 使用Matplotlib和Seaborn
import torch
import seaborn as sns
import matplotlib.pyplot as pltdef visualize_attention(attention_weights, tokens):"""可视化注意力权重:param attention_weights: 注意力权重矩阵,形状为 (seq_length, seq_length):param tokens: 输入序列的token列表"""plt.figure(figsize=(10, 8))sns.heatmap(attention_weights, xticklabels=tokens, yticklabels=tokens, cmap='YlGnBu', annot=True, fmt=".2f")plt.xlabel('Query Tokens')plt.ylabel('Key Tokens')plt.title('Attention Weights Visualization')plt.show()# 假设attention_weights是计算得到的注意力权重矩阵,tokens是输入序列的token列表
attention_weights = torch.rand(5, 5)
tokens = ['token1', 'token2', 'token3', 'token4', 'token5']
visualize_attention(attention_weights, tokens)
- **使用TensorBoard**:在PyTorch中,可以使用TensorBoard来可视化注意力权重。首先需要安装TensorBoard,然后在代码中添加相关的可视化逻辑。
from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter()
# 假设attention_weights是计算得到的注意力权重矩阵
attention_weights = torch.rand(5, 5)
writer.add_heatmap('attention_weights', attention_weights, global_step=0)
writer.close()

然后在命令行中运行tensorboard --logdir=runs,并在浏览器中打开相应的链接,就可以查看注意力权重的可视化结果。

97. 探讨Transformer在低资源语言任务中的挑战与解决方案

Transformer在低资源语言任务中面临一些挑战,同时也有相应的解决方案。

  • 原理说明
    • 挑战:低资源语言任务中,训练数据较少,模型容易过拟合。此外,由于数据不足,模型可能无法学习到足够的语言特征和语义信息,导致性能下降。而且低资源语言可能缺乏一些必要的语言资源,如大规模的语料库、预训练模型等,这也给模型的训练和应用带来了困难。
    • 解决方案:可以采用迁移学习的方法,将在高资源语言上预训练好的模型迁移到低资源语言任务上,然后在低资源语言数据上进行微调。还可以使用数据增强技术,如回译、同义词替换等,来扩充训练数据。此外,设计更轻量级的模型结构,减少模型的参数数量,也可以降低模型过拟合的风险。例如,可以减少Transformer的层数、头数或者降低嵌入维度等。
  • 示例代码:以迁移学习为例,使用Hugging Face的Transformers库进行低资源语言任务的微调。
from transformers import AutoModelForSequenceClassification, AutoTokenizer, Trainer, TrainingArguments
import torch# 加载预训练模型和分词器
model_name = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)  # 假设是二分类任务# 准备低资源语言数据
train_texts = ["This is a sample sentence for low - resource language task.", "Another sample sentence."]
train_labels = [0, 1]
train_encodings = tokenizer(train_texts, truncation=True, padding=True)
train_dataset = torch.utils.data.TensorDataset(torch.tensor(train_encodings['input_ids']),torch.tensor(train_encodings['attention_mask']),torch.tensor(train_labels)
)# 训练参数设置
training_args = TrainingArguments(output_dir='./results',num_train_epochs=3,per_device_train_batch_size=16,save_steps=10_000,save_total_limit=2,
)# 训练模型
trainer = Trainer(model=model,args=training_args,train_dataset=train_dataset
)
trainer.train()

98. Transformer与强化学习(RL)结合的典型场景有哪些(如RLHF)

Transformer与强化学习结合的典型场景有以下几种:

  • 原理说明
    • 对话系统:在对话系统中,Transformer可以用于建模用户的历史对话记录,而强化学习可以用于优化对话策略,以生成更合适的响应动作。例如,可以将Transformer作为策略网络,根据用户的输入和历史对话信息,生成下一个对话动作的概率分布,然后通过强化学习来最大化累计奖励,如用户的满意度等。
    • 游戏AI:在复杂的游戏中,Transformer可以用于建模游戏状态的全局上下文,将游戏状态、动作和奖励等信息作为输入序列,利用多头自注意力机制提取全局特征。强化学习可以根据这些特征来学习最优的游戏策略,以最大化游戏得分或完成特定的游戏目标。
    • 决策制定:在一些决策任务中,如机器人控制等,Transformer可以将历史状态、动作和奖励等信息作为输入,通过自注意力机制提取特征,然后输出可以直接作为Q - value或概率分布供后续采样操作使用,强化学习可以根据这些输出进行决策制定,以优化决策策略。
  • 示例代码:以对话系统为例,以下是一个简单的Transformer与强化学习结合的示例代码框架。
import torch
import torch.nn as nn
from transformers import AutoModelForCausalLM, AutoTokenizer# 加载预训练的Transformer模型和分词器
model_name = "gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)# 强化学习相关的定义
class PolicyNetwork(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(PolicyNetwork, self).__init__()self.fc1 = nn.Linear(input_size, hidden_size)self.fc2 = nn.Linear(hidden_size, output_size)def forward(self, x):x = torch.relu(self.fc1(x))return torch.softmax(self.fc2(x), dim=-1)policy_network = PolicyNetwork(768, 256, tokenizer.vocab_size)  # 假设Transformer输出维度为768# 训练过程
def train_dialogue_system():# 初始化状态state = "Hello"total_reward = 0for _ in range(10):  # 假设对话长度为10# 将状态编码为模型输入input_ids = tokenizer.encode(state, return_tensors='pt')output = model(input_ids)# 获取Transformer的输出特征features = output.last_hidden_state.mean(dim=1)# 根据策略网络生成动作概率分布action_probs = policy_network(features)### 98. Transformer与强化学习(RL)结合的典型场景有哪些(如RLHF)?
#### 原理说明
Transformer与强化学习(RL)的结合旨在通过RL的奖励机制优化Transformer的输出,使其更符合人类偏好或任务目标。典型场景包括:
- **RLHF(基于人类反馈的强化学习)**:先让Transformer生成候选输出,通过人类标注排序构建奖励模型(RM),再用RL(如PPO)微调模型以最大化奖励。
- **文本生成控制**:如控制生成文本的情感、长度或主题,通过RL定义对应奖励函数(如情感分类器得分)引导模型输出。
- **机器翻译优化**:针对特定指标(如BLEU值、语义一致性)设计奖励函数,用RL微调翻译模型以提升目标指标表现。#### 示例代码(RLHF核心流程示意)
```python
import torch
from transformers import GPT2LMHeadModel, GPT2Tokenizer
from torch.optim import Adam# 1. 初始化生成模型(Transformer)和奖励模型
generator = GPT2LMHeadModel.from_pretrained("gpt2")
reward_model = GPT2LMHeadModel.from_pretrained("gpt2")  # 实际中为训练好的奖励模型
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
tokenizer.pad_token = tokenizer.eos_token# 2. 生成候选文本
def generate_text(prompt, model, max_length=50):inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True)outputs = model.generate(**inputs, max_length=max_length, do_sample=True)return tokenizer.decode(outputs[0], skip_special_tokens=True)# 3. 定义PPO损失(简化版)
def ppo_loss(generator, old_logits, new_logits, rewards, epsilon=0.2):old_probs = torch.softmax(old_logits, dim=-1)new_probs = torch.softmax(new_logits, dim=-1)ratio = new_probs / (old_probs + 1e-8)surr1 = ratio * rewardssurr2 = torch.clamp(ratio, 1 - epsilon, 1 + epsilon) * rewardsreturn -torch.min(surr1, surr2).mean()# 4. 训练循环(简化)
prompt = "What is the meaning of life?"
optimizer = Adam(generator.parameters(), lr=1e-5)for _ in range(10):# 生成旧输出并记录logitsinputs = tokenizer(prompt, return_tensors="pt")old_outputs = generator(** inputs, output_logits=True)old_logits = old_outputs.logits# 生成新输出(带探索)new_outputs = generator(**inputs, output_logits=True, do_sample=True)new_logits = new_outputs.logits# 计算奖励(示例:用奖励模型打分)reward_inputs = tokenizer(generate_text(prompt, generator), return_tensors="pt")rewards = reward_model(** reward_inputs).logits.mean()  # 简化的奖励计算# 计算PPO损失并更新loss = ppo_loss(generator, old_logits, new_logits, rewards)optimizer.zero_grad()loss.backward()optimizer.step()

99. 什么是“注意力坍塌(Attention Collapse)”?如何避免?

原理说明

注意力坍塌指Transformer的自注意力权重分布趋于均匀(所有token权重接近)或集中于少数token(如仅关注自身),导致模型无法有效捕捉关键语义关联的现象。其成因包括:

  • 训练初期参数随机初始化,注意力分布无显著偏好;
  • 输入序列过长或噪声过多,token间关联性被稀释;
  • 模型深度过深,注意力机制随层叠逐渐“退化”。
避免方法
  1. 初始化优化:采用更合理的参数初始化(如Xavier初始化),使注意力权重在训练初期即有区分度。
  2. 正则化约束
    • 加入注意力熵正则项,惩罚分布过均匀或过集中的权重(如loss += -alpha * torch.sum(attn_weights * torch.log(attn_weights + 1e-8)));
    • 对注意力权重施加稀疏性约束(如L1正则)。
  3. 改进注意力机制
    • 使用相对位置编码而非绝对位置编码,增强长序列中位置关联性;
    • 引入局部注意力掩码(如Transformer-XL的分段注意力),限制无意义关联的token参与计算。
  4. 训练策略调整
    • 采用预热学习率(warm-up),避免训练初期参数剧烈波动;
    • 对过长序列进行分段处理,减少噪声token的干扰。
示例代码(注意力熵正则化)
import torchdef attention_with_entropy_reg(queries, keys, values, dropout=0.1, reg_alpha=0.01):d_k = queries.size(-1)scores = torch.matmul(queries, keys.transpose(-2, -1)) / torch.sqrt(torch.tensor(d_k, dtype=torch.float32))attn_weights = torch.softmax(scores, dim=-1)  # 注意力权重# 计算注意力熵attn_entropy = -torch.sum(attn_weights * torch.log(attn_weights + 1e-8), dim=-1).mean()entropy_reg = reg_alpha * (1 - attn_entropy)  # 惩罚低熵(分布集中)或过高熵(分布均匀)attn_weights = torch.nn.functional.dropout(attn_weights, p=dropout, training=True)outputs = torch.matmul(attn_weights, values)return outputs, entropy_reg# 在总损失中加入正则项
queries = torch.randn(2, 4, 64)  # (batch, seq_len, d_k)
keys = torch.randn(2, 4, 64)
values = torch.randn(2, 4, 64)
outputs, entropy_reg = attention_with_entropy_reg(queries, keys, values)
total_loss = task_loss + entropy_reg  # task_loss为任务损失(如分类损失)

100. 未来Transformer模型的发展趋势可能有哪些?

原理说明

Transformer的发展趋势将围绕效率提升能力扩展场景适配三大方向,具体包括:

  1. 高效轻量化
    • 设计更精简的注意力机制(如Flash Attention的IO优化、线性注意力替代软注意力);
    • 动态网络结构(如根据输入调整层数或注意力头数),平衡性能与计算成本。
  2. 多模态融合
    • 统一文本、图像、音频、视频的表示空间,实现跨模态理解与生成(如GPT-4、FLAVA);
    • 引入模态专属注意力机制(如针对图像的空间注意力与文本的语义注意力结合)。
  3. 可解释性增强
    • 改进注意力权重的可解释性,避免“虚假关联”(如通过因果推断过滤非语义相关的注意力);
    • 引入可解释模块(如注意力权重可视化工具、语义关联溯源机制)。
  4. 低资源与鲁棒性优化
    • 针对小样本、低资源语言任务设计更高效的预训练策略(如迁移学习+提示微调);
    • 增强模型对噪声、对抗样本的鲁棒性(如对抗训练、数据增强)。
  5. 与其他范式结合
    • 融合符号逻辑(如知识图谱),提升推理能力(如思维链Chain-of-Thought);
    • 结合强化学习(如更高效的RLHF)、元学习,实现模型自主进化与适应新任务。
示例(动态Transformer结构示意)
import torch
import torch.nn as nnclass DynamicTransformerLayer(nn.Module):def __init__(self, d_model, nhead, max_layers=4):super().__init__()self.layers = nn.ModuleList([nn.TransformerEncoderLayer(d_model, nhead) for _ in range(max_layers)])self.layer_selector = nn.Linear(d_model, max_layers)  # 动态选择层数的控制器def forward(self, x):# 根据输入特征动态选择层数layer_scores = torch.softmax(self.layer_selector(x.mean(dim=1)), dim=-1)  # 基于序列均值的层数评分num_layers = torch.argmax(layer_scores).item() + 1  # 选择评分最高的层数(至少1层)# 前向传播(仅使用选定的层数)for i in range(num_layers):x = self.layers[i](x)return x# 应用动态层的Transformer
d_model = 512
nhead = 8
dynamic_encoder = DynamicTransformerLayer(d_model, nhead)
inputs = torch.randn(32, 10, d_model)  # (batch, seq_len, d_model)
outputs = dynamic_encoder(inputs)  # 自动适配层数

二、120道Transformer面试题目录列表

文章序号Transformer 120道
1Transformer面试题及详细答案120道(01-10)
2Transformer面试题及详细答案120道(11-20)
3Transformer面试题及详细答案120道(21-30)
4Transformer面试题及详细答案120道(31-40)
5Transformer面试题及详细答案120道(41-50)
6Transformer面试题及详细答案120道(51-60)
7Transformer面试题及详细答案120道(61-70)
8Transformer面试题及详细答案120道(71-80)
9Transformer面试题及详细答案120道(81-90)
10Transformer面试题及详细答案120道(91-100)
11Transformer面试题及详细答案120道(101-110)
12Transformer面试题及详细答案120道(111-120)
http://www.dtcms.com/a/495157.html

相关文章:

  • 汕头哪里建网站iis 网站建设中
  • 海南网站建设哪家专业如何用普通电脑做网站服务器
  • Android多进程通信机制
  • 整体设计 逻辑系统程序 之32 程序定稿 从三对核心概念到三大中台架构的完整设计演进(含全套程序)
  • Android基础入门教程(视频教程)
  • 艺术网站建设公司有哪些好的网站模版
  • 笔记本电脑如何连接打印机?完整连接教程送上
  • IDEA开发JAVA项目
  • 常州模板建站定制网站亚马逊雨林是怎么形成的
  • app怎么防止被攻击被打有多少种防护方式?
  • FFmpeg 基本API avformat_open_input函数内部调用流程分析
  • h5游戏免费下载:进击的方块
  • 修电脑日志--电脑开机黑屏只有光标闪
  • LLaVA-OV:开源多模态的“可复现”革命,不只是又一个模型
  • 网站建设与管理视频教程建设招标网 手机官方网站
  • 快手官方网站音乐人怎么做公司网站模板免费版
  • LeetCode——滑动窗口(进阶)
  • 顺序表算法题(LeetCode)
  • Leetcode每日一练--37
  • F029 vue游戏推荐大数据可视化系统vue+flask+mysql|steam游戏平台可视化
  • leetCode第33题
  • 永久免费搭建网站网页设计与网站建设选择题
  • 【Spring AI】MCP Server 从 sse 升级到 streamableHttp
  • 如何基于Deepseek进行文本章节结构恢复
  • 颠覆传统测试范式:Keploy 如何用 eBPF 技术让测试“偷懒“却更高效?
  • 设计网站推荐html代码全媒体广告策划与营销
  • 企业服务网站开发简要说明网站制作的基本步骤
  • 伊萨推出升级版SUPRAREX™ PRO自动化切割设备:更大尺寸、更强结构、更高安全性、更易维护
  • 如何在本地部署大语言模型(Windows,Mac,Linux)三系统教程
  • 营销型网站建设营销型套网站模板软件