大模型-什么是Fine-tuning

推荐一篇比较透彻的介绍

对于深度学习模型中的 Fine-tuning(微调)操作,以下是详细介绍和原理说明:

什么是 Fine-tuning(微调)?

Fine-tuning 是指在一个已经训练好的模型基础上,通过使用新的数据集或任务来进一步调整模型参数的过程。通常情况下,已经训练好的模型是在大规模数据集上进行训练得到的,而 Fine-tuning 则可以使模型适应新的特定任务或数据集。

Fine-tuning 的原理和步骤:

  1. 选择预训练模型:首先需要选择一个在大规模数据集上预训练过的模型,例如 BERT、GPT 等。这些模型在通用任务上已经表现出色,可以作为 Fine-tuning 的基础模型。

  2. 冻结部分网络层:在 Fine-tuning 过程中,通常会冻结模型的一部分网络层,即保持它们的权重不变,只对部分层进行参数更新。这样可以避免在新任务上过度拟合。

  3. 定义新任务:确定要在新数据集或任务上解决的问题,并根据问题定义相应的输出层和损失函数。

  4. 调整模型参数:通过在新数据集上反向传播误差,更新模型参数以适应新任务。在训练过程中,可以逐步解冻更多的网络层进行微调。

  5. 调整超参数:在 Fine-tuning 过程中,可能需要调整学习率、优化器类型等超参数,以获得更好的性能。

  6. 评估和验证:在 Fine-tuning 完成后,需要对模型在验证集或测试集上进行评估,以确保模型在新任务上的性能符合预期。

Fine-tuning 的应用场景:

  • 文本分类:将预训练的语言模型应用于文本分类任务,如情感分析、垃圾邮件识别等。
  • 机器翻译:在已有的机器翻译模型上微调,以适应特定领域或语种的翻译需求。
  • 目标检测:在已有的目标检测模型上微调,以适应特定类别或场景的目标检测任务。

注意事项:

  • Fine-tuning 需要注意过拟合问题,可以通过合适的正则化手段和数据增强来缓解。
  • 在 Fine-tuning 过程中,要注意选择合适的学习率和迭代次数,以避免训练过程中出现梯度爆炸或消失的问题。

希望以上信息能帮助您更好地理解 Fine-tuning 的原理和应用。如果有任何问题或需要进一步解释,请随时告诉我!

 

当进行模型微调时,通常会遵循以下步骤和技巧:

步骤:
  1. 选择合适的预训练模型:根据任务需求选择一个在大规模数据上预训练过的模型,例如BERT、GPT等。这些模型已经学习到了丰富的语言表示,可以作为微调的基础。

  2. 准备新数据集:准备包含大量样本的新数据集,并确保数据集的质量和标注准确性。新数据集应该与原始训练数据有一定的差异,以便模型能够学习到新的特征和模式。

  3. 冻结模型参数:在开始微调之前,通常会冻结模型的大部分参数,以防止在初始阶段过度拟合。一般来说,只有顶部几层或者输出层会被解冻用于微调。

  4. 定义新任务:根据实际任务需求,设计新的输出层和损失函数。例如,对于文本分类任务,需要添加一个全连接层作为输出层,并选择适当的损失函数来进行微调。

  5. 微调模型:在新数据集上进行训练,通过反向传播算法更新模型参数。可以逐步解冻更多的网络层,以便模型能够适应新任务的要求。

  6. 超参数调优:微调过程中,需要根据实际情况选择合适的学习率、优化器类型和正则化方法等超参数,以提高模型性能。

  7. 评估和验证:在微调完成后,需要对模型在验证集或测试集上进行评估,以验证模型在新任务上的性能。

技巧:

  • 避免过拟合:在微调过程中,要注意合理使用正则化技术和数据增强方法,以避免模型在新数据集上的过拟合问题。

  • 选择合适的学习率:微调过程中,学习率的选择非常重要。可以使用学习率调度器或者进行学习率搜索来找到最佳的学习率。

  • 监控模型性能:及时监控模型在验证集上的性能,并根据实际情况调整微调策略和超参数设置。

希望以上信息能帮助您更好地理解模型微调的步骤和技巧。如果您对某个具体方面有更深入的疑问,也欢迎随时向我提出!

当进行模型微调时,还有一些额外的注意事项和技巧可以帮助您获得更好的结果:

注意事项:

  1. 数据标签的质量:确保新数据集的标签质量高,标签错误会对模型微调产生不良影响。

  2. 控制模型复杂度:避免在微调过程中引入过多的参数或层,以防止模型过度拟合。

  3. 监控训练过程:及时监控训练过程中的损失值和性能指标变化,以便及时调整训练策略。

  4. 合理选择迭代次数:避免训练次数过多或过少,可以通过验证集上的性能来确定合适的停止训练条件。

技巧:

  1. 迁移学习:考虑使用迁移学习的思想,在不同任务之间共享部分模型参数,以加速微调过程并提高性能。

  2. 特征提取:除了微调顶部层外,还可以考虑从预训练模型中提取中间层特征作为输入,从而提高模型性能。

  3. 领域自适应:针对不同领域的数据,可以采用领域自适应的方法对模型进行微调,以提高泛化能力。

  4. 模型集成:考虑将多个微调后的模型进行集成,以获得更好的性能表现。

 

当进行 Fine-tuning 时,一个常见的示例是在自然语言处理领域中使用预训练的语言模型(如BERT)进行文本分类任务的微调。以下是一个简单的 Fine-tuning 示例:

Fine-tuning 示例:文本分类任务

步骤:
  1. 准备数据集:准备一个包含文本和对应标签的数据集,例如 IMDB 电影评论数据集,其中包含正面和负面评论。

  2. 加载预训练模型:首先加载一个预训练的语言模型,比如 Hugging Face 提供的 Transformers 库中的 BERT 模型。

  3. 准备模型架构:根据文本分类任务的需求,在预训练模型的基础上添加一个全连接层作为分类器,并选择合适的损失函数(如交叉熵损失)。

  4. 微调模型:在加载数据集后,通过反向传播算法更新模型参数,可以逐步解冻部分网络层,以便模型适应新任务。

  5. 评估模型:在微调完成后,使用测试集评估模型在文本分类任务上的性能,可以查看准确率、精确率、召回率等指标。

代码示例(使用 Python 和 Transformers 库):
from transformers import BertTokenizer, BertForSequenceClassification, AdamW
import torch# 加载预训练的BERT模型和tokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)# 准备数据集(假设已经加载数据集并进行处理)
train_texts = [...]  # 训练文本
train_labels = [...]  # 训练标签# 将文本转换为输入张量
inputs = tokenizer(train_texts, return_tensors='pt', padding=True, truncation=True)
labels = torch.tensor(train_labels)# 定义优化器和损失函数
optimizer = AdamW(model.parameters(), lr=5e-5)
loss_fn = torch.nn.CrossEntropyLoss()# 微调模型
model.train()
for epoch in range(num_epochs):optimizer.zero_grad()outputs = model(**inputs, labels=labels)loss = outputs.lossloss.backward()optimizer.step()# 评估模型
model.eval()
test_texts = [...]  # 测试文本
test_labels = [...]  # 测试标签test_inputs = tokenizer(test_texts, return_tensors='pt', padding=True, truncation=True)
test_labels = torch.tensor(test_labels)with torch.no_grad():outputs = model(**test_inputs)logits = outputs.logits# 计算准确率等指标
predictions = torch.argmax(logits, dim=1)
accuracy = (predictions == test_labels).float().mean().item()

 以上示例演示了如何使用BERT模型进行文本分类任务的微调,其中包括加载预训练模型、准备数据集、定义模型架构、微调模型和评估模型等步骤。您可以根据实际情况对代码进行修改和扩展,以适应不同的任务和数据集。希望这个示例能够帮助您更好地理解 Fine-tuning 的过程!如果您有任何问题或需要进一步解释,请随时告诉我。

当进行 Fine-tuning 时,一个常见的示例是在计算机视觉领域中使用预训练的卷积神经网络(如ResNet、VGG等)进行图像分类任务的微调。以下是一个简单的 Fine-tuning 示例:

Fine-tuning 示例:图像分类任务

步骤:
  1. 准备数据集:准备一个包含图像和对应标签的数据集,例如 CIFAR-10 数据集,其中包含10个不同类别的图像。

  2. 加载预训练模型:首先加载一个预训练的卷积神经网络模型,比如 PyTorch 提供的 torchvision 库中的 ResNet 模型。

  3. 准备模型架构:根据图像分类任务的需求,在预训练模型的基础上修改最后一层全连接层以适应新的类别数量,并选择合适的损失函数(如交叉熵损失)。

  4. 微调模型:在加载数据集后,通过反向传播算法更新模型参数,可以逐步解冻部分网络层,以便模型适应新任务。

  5. 评估模型:在微调完成后,使用测试集评估模型在图像分类任务上的性能,可以查看准确率、混淆矩阵等指标。

代码示例(使用 Python 和 PyTorch):
import torch
import torchvision
import torchvision.transforms as transforms
import torch.optim as optim
import torch.nn as nn# 加载预训练的ResNet模型
model = torchvision.models.resnet18(pretrained=True)
num_classes = 10  # 新的类别数量
model.fc = nn.Linear(model.fc.in_features, num_classes)  # 修改最后一层全连接层# 准备数据集(假设已经下载并加载CIFAR-10数据集)
transform = transforms.Compose([transforms.Resize(224),  # 将图像大小调整为适应ResNet的输入尺寸transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])trainset = torchvision.datasets.CIFAR10(root='./data', train=True,download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,shuffle=True, num_workers=2)# 定义优化器和损失函数
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)# 微调模型
model.train()
for epoch in range(num_epochs):running_loss = 0.0for i, data in enumerate(trainloader, 0):inputs, labels = dataoptimizer.zero_grad()outputs = model(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()running_loss += loss.item()# 评估模型
model.eval()
testset = torchvision.datasets.CIFAR10(root='./data', train=False,download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=4,shuffle=False, num_workers=2)correct = 0
total = 0
with torch.no_grad():for data in testloader:images, labels = dataoutputs = model(images)_, predicted = torch.max(outputs, 1)total += labels.size(0)correct += (predicted == labels).sum().item()accuracy = 100 * correct / total

 以上示例演示了如何使用预训练的ResNet模型进行图像分类任务的微调,其中包括加载预训练模型、准备数据集、定义模型架构、微调模型和评估模型等步骤。您可以根据实际情况对代码进行修改和扩展,以适应不同的任务和数据集。希望这个示例能够帮助您更好地理解 Fine-tuning 的过程!

当进行 Fine-tuning 时,另一个常见的示例是在声音识别领域中使用预训练的语音识别模型(如DeepSpeech、Wav2Vec等)进行语音识别任务的微调。以下是一个简单的 Fine-tuning 示例:

Fine-tuning 示例:语音识别任务

步骤:
  1. 准备数据集:准备一个包含音频文件和对应文本标签的数据集,例如 CommonVoice 数据集,其中包含多种语言的语音样本。

  2. 加载预训练模型:首先加载一个预训练的语音识别模型,比如 Hugging Face 提供的 Transformers 库中的 Wav2Vec 模型。

  3. 准备模型架构:根据语音识别任务的需求,在预训练模型的基础上添加一个适合新任务的全连接层,并选择合适的损失函数(如CTC 损失)。

  4. 准备数据:将音频文件转换为模型可接受的格式,通常是提取特征或进行傅立叶变换,然后转换为张量输入。

  5. 微调模型:在加载数据集后,通过反向传播算法更新模型参数,可以逐步解冻部分网络层,以便模型适应新任务。

  6. 评估模型:在微调完成后,使用测试集评估模型在语音识别任务上的性能,可以查看识别准确率等指标。

代码示例(使用 Python 和 Transformers 库):
from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC
import torchaudio
import torch
import numpy as np# 加载预训练的Wav2Vec模型和processor
processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-base-960h")
model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")# 准备数据集(假设已经加载音频文件并进行处理)
audio_file = "path_to_audio_file.wav"
text_label = "transcription_of_audio"# 将音频文件转换为模型可接受的输入格式
speech, _ = torchaudio.load(audio_file)
input_values = processor(speech, return_tensors="pt", padding=True).input_values# 将文本标签转换为张量格式
labels = processor(text_label, return_tensors="pt").input_ids# 定义优化器和损失函数
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-4)
loss_fn = torch.nn.CTCLoss()# 微调模型
model.train()
for epoch in range(num_epochs):optimizer.zero_grad()logits = model(input_values).logitsloss = loss_fn(logits, labels, input_values, labels)loss.backward()optimizer.step()# 评估模型
model.eval()
test_audio_file = "path_to_test_audio_file.wav"
test_text_label = "transcription_of_test_audio"test_speech, _ = torchaudio.load(test_audio_file)
test_input_values = processor(test_speech, return_tensors="pt", padding=True).input_values
test_labels = processor(test_text_label, return_tensors="pt").input_idswith torch.no_grad():test_logits = model(test_input_values).logits# 计算识别准确率等指标
predicted_ids = torch.argmax(test_logits, dim=-1)
predicted_text = processor.batch_decode(predicted_ids)
accuracy = np.mean([pred == test_text_label for pred in predicted_text])

 以上示例演示了如何使用Wav2Vec2模型进行语音识别任务的微调,其中包括加载预训练模型、准备数据集、定义模型架构、微调模型和评估模型等步骤。您可以根据实际情况对代码进行修改和扩展,以适应不同的任务和数据集。希望这个示例能够帮助您更好地理解 Fine-tuning 的过程!

当进行 Fine-tuning 时,另一个常见的示例是在自然语言处理领域中使用预训练的语言模型(如BERT、GPT等)进行文本分类任务的微调。以下是一个简单的 Fine-tuning 示例:

Fine-tuning 示例:文本分类任务

步骤:
  1. 准备数据集:准备一个包含文本和对应类别标签的数据集,例如 IMDb 电影评论数据集,其中包含积极和消极情感的评论。

  2. 加载预训练模型:首先加载一个预训练的语言模型,比如 Hugging Face 提供的 Transformers 库中的 BERT 模型。

  3. 准备模型架构:根据文本分类任务的需求,在预训练模型的基础上添加一个适合新任务的分类器(如全连接层),并选择合适的损失函数(如交叉熵损失)。

  4. 准备数据:将文本数据转换为模型可接受的输入格式,通常是通过分词/tokenization 和添加特殊标记来表示句子的开始和结束。

  5. 微调模型:在加载数据集后,通过反向传播算法更新模型参数,可以逐步解冻部分网络层,以便模型适应新任务。

  6. 评估模型:在微调完成后,使用测试集评估模型在文本分类任务上的性能,可以查看准确率、精确率、召回率等指标。

代码示例(使用 Python 和 Transformers 库):
from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments
import torch
from sklearn.model_selection import train_test_split# 加载预训练的BERT模型和tokenizer
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')# 准备数据集(假设已经加载文本数据和标签)
texts = ["example text 1", "example text 2", ...]
labels = [0, 1, ...]  # 标签对应类别# 分割训练集和验证集
train_texts, val_texts, train_labels, val_labels = train_test_split(texts, labels, test_size=0.2)# 将文本数据转换为模型可接受的格式
train_encodings = tokenizer(train_texts, truncation=True, padding=True)
val_encodings = tokenizer(val_texts, truncation=True, padding=True)class CustomDataset(torch.utils.data.Dataset):def __init__(self, encodings, labels):self.encodings = encodingsself.labels = labelsdef __getitem__(self, idx):item = {key: torch.tensor(val[idx]) for key, val in self.encodings.items()}item['labels'] = torch.tensor(self.labels[idx])return itemdef __len__(self):return len(self.labels)train_dataset = CustomDataset(train_encodings, train_labels)
val_dataset = CustomDataset(val_encodings, val_labels)# 定义训练参数
training_args = TrainingArguments(per_device_train_batch_size=4,per_device_eval_batch_size=4,num_train_epochs=3,evaluation_strategy="epoch",logging_dir='./logs',
)# 创建Trainer对象并进行微调
trainer = Trainer(model=model,args=training_args,train_dataset=train_dataset,eval_dataset=val_dataset,
)trainer.train()# 评估模型
results = trainer.evaluate()

 以上示例演示了如何使用BERT模型进行文本分类任务的微调,其中包括加载预训练模型、准备数据集、定义模型架构、微调模型和评估模型等步骤。您可以根据实际情况对代码进行修改和扩展,以适应不同的任务和数据集。希望这个示例能够帮助您更好地理解 Fine-tuning 的过程!

当进行 Fine-tuning 时,还有一个常见的示例是在计算机视觉领域中使用预训练的卷积神经网络(CNN)进行图像分类任务的微调。以下是一个简单的 Fine-tuning 示例:

Fine-tuning 示例:图像分类任务

步骤:
  1. 准备数据集:准备一个包含图像和对应类别标签的数据集,例如 CIFAR-10 数据集,其中包含 10 类不同类型的图像。

  2. 加载预训练模型:首先加载一个预训练的卷积神经网络模型,比如 PyTorch 提供的 torchvision 库中的 ResNet 模型。

  3. 准备模型架构:根据图像分类任务的需求,在预训练模型的基础上修改输出层以适应新任务的类别数,并选择合适的损失函数(如交叉熵损失)。

  4. 准备数据:将图像数据转换为模型可接受的输入格式,通常是进行预处理(缩放、裁剪)并将图像转换为张量格式。

  5. 微调模型:在加载数据集后,通过反向传播算法更新模型参数,可以选择冻结部分网络层或采用不同的学习率来微调模型。

  6. 评估模型:在微调完成后,使用测试集评估模型在图像分类任务上的性能,可以查看准确率、混淆矩阵等指标。

代码示例(使用 Python 和 PyTorch):
import torch
import torchvision
from torchvision import transforms, datasets
import torch.nn as nn
import torch.optim as optim# 加载预训练的ResNet模型
model = torchvision.models.resnet18(pretrained=True)
num_classes = 10  # 新的类别数
num_ftrs = model.fc.in_features
model.fc = nn.Linear(num_ftrs, num_classes)# 准备数据集(假设已经加载图像数据并进行处理)
data_transforms = transforms.Compose([transforms.Resize(256),transforms.CenterCrop(224),transforms.ToTensor(),
])
train_data = datasets.CIFAR10(root='./data', train=True, download=True, transform=data_transforms)
test_data = datasets.CIFAR10(root='./data', train=False, download=True, transform=data_transforms)# 定义优化器和损失函数
optimizer = optim.Adam(model.parameters(), lr=0.001)
criterion = nn.CrossEntropyLoss()# 创建数据加载器
train_loader = torch.utils.data.DataLoader(train_data, batch_size=4, shuffle=True)
test_loader = torch.utils.data.DataLoader(test_data, batch_size=4, shuffle=False)# 微调模型
model.train()
for epoch in range(5):  # 假设进行5个epoch的微调running_loss = 0.0for i, data in enumerate(train_loader, 0):inputs, labels = dataoptimizer.zero_grad()outputs = model(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()running_loss += loss
[Something went wrong, please try again later.]

 

当进行 Fine-tuning 时,还有一个常见的示例是在计算机视觉领域中使用预训练的图像分类模型(如ResNet、EfficientNet等)进行迁移学习和微调。以下是一个简单的 Fine-tuning 示例:

Fine-tuning 示例:图像分类任务

步骤:
  1. 准备数据集:准备一个包含图像数据和对应类别标签的数据集,例如 CIFAR-10 数据集,其中包含不同类别的图像。

  2. 加载预训练模型:加载一个预训练的图像分类模型,比如 PyTorch 提供的 torchvision 库中的 ResNet 模型。

  3. 准备模型架构:根据图像分类任务的需求,在预训练模型的基础上修改输出层,以匹配新任务的类别数量,并选择合适的损失函数(如交叉熵损失)。

  4. 准备数据:将图像数据进行预处理和增强操作,如缩放、裁剪、归一化等,以便模型接受。

  5. 微调模型:在加载数据集后,通过反向传播算法更新模型参数,可以逐步解冻部分网络层,以便模型适应新任务。

  6. 评估模型:在微调完成后,使用测试集评估模型在图像分类任务上的性能,可以查看准确率、混淆矩阵等指标。

代码示例(使用 Python 和 PyTorch):
import torch
import torchvision
from torchvision import models, transforms, datasets
import torch.nn as nn
import torch.optim as optim# 加载预训练的ResNet模型
model = models.resnet18(pretrained=True)
num_classes = 10  # 假设有10个类别
num_ftrs = model.fc.in_features
model.fc = nn.Linear(num_ftrs, num_classes)# 准备数据集(假设已经下载并加载了CIFAR-10数据集)
transform = transforms.Compose([transforms.Resize(224),transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])train_dataset = datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
test_dataset = datasets.CIFAR10(root='./data', train=False, download=True, transform=transform)train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=32, shuffle=True)
test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=32, shuffle=False)# 定义优化器和损失函数
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)# 微调模型
model.train()
for epoch in range(5):  # 假设进行5个epoch的微调for inputs, labels in train_loader:optimizer.zero_grad()outputs = model(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()# 评估模型
model.eval()
correct = 0
total = 0
with torch.no_grad():for inputs, labels in test_loader:outputs = model(inputs)_, predicted = torch.max(outputs, 1)total += labels.size(0)correct += (predicted == labels).sum().item()accuracy = correct / total

以上示例演示了如何使用ResNet模型进行图像分类任务的微调,其中包括加载预训练模型、准备数据集、定义模型架构、微调模型和评估模型等步骤。您可以根据实际情况对代码进行修改和扩展,以适应不同的任务和数据集。希望这个示例能够帮助您更好地理解 Fine-tuning 的过程!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/759202.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Spring Boot中如何处理跨域请求(CORS)?

什么是跨域? 跨域(Cross-Origin Resource Sharing,CORS)是一种机制,它允许在 Web 页面上运行的脚本能够请求从不同源(域名、协议或端口)的资源。在浏览器安全策略中,有一条称为同源…

python 中怎样使用任意关键词实参?

在 Python 中,可以使用任意数量的关键字实参和任意关键字实参,也被称为 kwargs。 这允许你在函数调用时传递任意数量的关键字参数。 你可以使用任意数量的关键字实参(Keyword Arguments)和任意关键字实参(Arbitrary Ke…

sonar接入maven项目

1、介绍 sonar是一款静态代码质量分析工具,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,而且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告。他有如下特性 (1) 检查代码是否遵循编程标准:如命…

走迷宫---dfs在矩阵图里的应用模板

题目描述如下: dfs算法解决迷宫问题的一个标准模板 ,通过递归与回溯暴力遍历所有能走的点,并比较找出所有可行方案的最优解 解决这道问题的核心思想和组合数如出一辙,可以说是组合数的升级版 结合注释看dfs更清晰易懂&#xff0…

springcloud-Eureka注册中心

如果你要理解这个技术博客博客专栏 请先学习以下基本的知识: 什么是微服务什么是服务拆分什么是springcloud Springcloud为微服务开发提供了一个比较泛用和全面的解决框架,springcloud继承了spring一直以来的风格——不重复造轮子,里面很多的…

测试平台——前端框架

一、创建vue项目 npm init vitelatest web_class wylWYLdeMacBook-Air testplatform % npm init vitelatest web_class ✔ Select a framework: › Vue ✔ Select a variant: › JavaScriptScaffolding project in /Users/wyl/workspace/testplatform/web_class...Done. Now…

IoT 物联网场景中如何应对安全风险?——青创智通

工业物联网解决方案-工业IOT-青创智通 ​随着物联网(IoT)技术的快速发展,越来越多的设备、系统和应用被连接到互联网上,从而构建了一个庞大的物联网生态系统。然而,这种连接性也带来了前所未有的安全风险。在物联网场景…

Android Studio实现内容丰富的安卓校园公告助手

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 093校园助手 1.开发环境 android stuido3.6 jak1.8 eclipse mysql tomcat 2.功能介绍 具体往下看第三节,功能截图 安卓端: 1.注册登录 2.校园公告列表…

微信小程序执行环境(微信端)与浏览器环境有何不同

微信小程序执行环境与浏览器环境有很多不同之处,以下是一些例子: 全局对象: 浏览器环境中的 JavaScript 有一个全局对象 window,而微信小程序中的 JavaScript 没有 window 对象,取而代之的是 wx 对象,wx …

持续集成平台 02 jenkins plugin 插件

拓展阅读 Devops-01-devops 是什么? Devops-02-Jpom 简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件 代码质量管理 SonarQube-01-入门介绍 项目管理平台-01-jira 入门介绍 缺陷跟踪管理系统,为针对缺陷管理、任务追踪和项目管理的商业…

系统架构设计师考试-专业英语

词汇含义access存取active-matrix主动矩阵adapter适配器,转换器adapter cards适配卡agents代理analog signals模拟信号animations动画applets程序arithmetic operations算术运算array数组,阵列assembly汇编,安装,装配asynchronous…

C#面:简述 LINQ

C# 中的 LINQ(Language Integrated Query)是集成查询语言,它允许我们在编写代码时使用类似于 SQL 的查询语法来查询和操作各种数据源,如集合、数据库、XML 等。 LINQ 的主要特点包括: 统一的查询语法:LIN…

【pip 安装pymssql报错】 Failed to build pymssql

在使用pip install pymssql安装pymssql时报如下图的错误&#xff1b; 报错截图 2&#xff09;查找资料说pip<3.0版本 &#xff0c;我也试了&#xff0c;不行。 你们也可以试一试&#xff1a;pip install"pymssql<3.0" 3&#xff09;我的成功方式&#xff1…

全量知识系统 概要设计(SmartChat回复)

以下是根据我给出的 系统概要 “提要和纪要”&#xff0c;SmartChat给出的概要设计。我给出的“提要和纪要”可参考链接&#xff1a; https://blog.csdn.net/ChuanfangChen/article/details/136861822 -------------------------------- 概要设计文档 1. 简介 全量知识系统…

浅谈 电脑和车的对比

https://www.zhihu.com/question/547115488 电脑CPU与汽车发动机有哪些相同点与不同点&#xff1f; - 知乎 就想机械硬盘一样 我们的技术可能达不到 但是我们可以弯道超车 比如长江存储的SSD可以取代 以前的机械硬盘

流畅的 Python 第二版(GPT 重译)(八)

第十五章&#xff1a;关于类型提示的更多内容 我学到了一个痛苦的教训&#xff0c;对于小程序来说&#xff0c;动态类型很棒。对于大型程序&#xff0c;你需要更加纪律严明的方法。如果语言给予你这种纪律&#xff0c;而不是告诉你“嗯&#xff0c;你可以做任何你想做的事情”&…

JavaScript:TypeScript网上笔记总结

文章目录 1:基础类型数值型 number字符串类型 string布尔类型 boolean数组类型 Array元组 Tuple任意类型 anyvoid&#xff1a;与any类型相反&#xff0c;表示没有类型null 、undefined类型never类型枚举类型类型断言类型推论&#xff5c;类型别名 2:接口3:类&#xff08;不咋用…

WordPress Wholesale Market 插件 任意文件读取漏洞复现

0x01 产品简介 WordPress plugin Wholesale Market 是一个woocommerce扩展插件&#xff0c;使您的商店能够创建批发用户&#xff0c;并通过设置产品的批发价格。 0x02 漏洞概述 WordPress plugin Wholesale Market 2.2.1之前版本存在路径遍历漏洞&#xff0c;该漏洞源于没有…

海南省月降水量分布数据

海南省位于中国南端&#xff0c;海南岛地处热带北缘&#xff0c;属热带季风气候&#xff0c;长夏无冬。海南省雨量充沛&#xff0c;年降水量在1000毫米&#xff5e;2600毫米之间&#xff0c;年平均降水量为1639毫米&#xff0c;有明显的多雨季和少雨季。每年的5&#xff5e;10月…

Django资源路径问题

学习过django框架的应该了解后端有static静态文件&#xff0c;media媒体文件&#xff0c;还有一些其他的配置文件&#xff0c;那么在整个web服务中每个区域访问资源的路径有什么区别呢 前端模版中src 一般本地项目的src都是写项目中的相对路径或者根据电脑磁盘的绝对路径 而在…