七、大模型-什么是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/766837.shtml

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

相关文章

Arcgis 导入经纬度坐标、导出经纬度坐标

目录 一、导入经纬度坐标 1、在excel中准备好经纬度坐标的数据表 2、将数据放入Acrgis的工作路径 3、在arcgis中添加数据 4、显示经纬度坐标点 5、导出为shp矢量文件 二、根据shp的经纬度坐标点导出成经纬度坐标 1、右键选择打开属性表 2、在属性表的菜单下拉栏里找到…

三、阅读器的开发--1、项目准备

1、项目准备 1.1、项目搭建 我用的脚手架是vue cli 5.0的,通过vue create 项目名称来创建的项目 上下箭头选的是最后那个,是指手动配置,然后回车 空格选中下面这些,然后回车 下图最后那个指我们所有的配置在哪里配置&#xff0…

c++ 线程池/Github 开源项目源码分析(progschj/ThreadPool)

c 线程池/Github 开源项目源码分析(progschj/ThreadPool) 前言[ThreadPool 项目地址](https://github.com/progschj/ThreadPool)项目源码:基本用法类成员变量类成员函数构造函数的签名创建线程线程默认的任务向任务队列中添加一个任务析构函数…

open images v7的600类别名称

英文: 0: Accordion1: Adhesive tape2: Aircraft3: Airplane4: Alarm clock5: Alpaca6: Ambulance7: Animal8: Ant9: Antelope10: Apple11: Armadillo12: Artichoke13: Auto part14: Axe15: Backpack16: Bagel17: Baked goods18: Balance beam19: Ball20: Balloon21…

【Rust】Shared-State Concurrency

Shared-State Concurrency channel类似于single ownership. 而shared memory类似与multiple ownership. multiple ownership是难于管理的. smarter pointer也是multiple ownership的. Rust的type system和ownership rules帮助实现正确的multiple ownership管理。 Using Mute…

百度智能云+SpringBoot=AI对话【人工智能】

百度智能云SpringBootAI对话【人工智能】 前言版权推荐百度智能云SpringBootAI对话【人工智能】效果演示登录AI对话 项目结构后端开发pom和propertiessql_table和entitydao和mapperservice和implconfig和utilLoginController和ChatController 前端开发css和jslogin.html和chat.…

MySQL 8.0-索引- 不可见索引(invisible indexes)

概述 MySQL 8.0引入了不可见索引(invisible index),这个在实际工作用还是用的到的,我觉得可以了解下。 在介绍不可见索引之前,我先来看下invisible index是个什么或者定义。 我们依然使用拆开来看,然后再把拆出来的词放到MySQL…

kali安装docker(亲测有效)

第一步:添加Docker官方的GPG密钥 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - 第二步: 第二步更新源 echo deb https://download.docker.com/linux/debian stretch stable> /etc/apt/sources.list.d/docker.list…

数据结构——树与二叉树

目录 树与二叉树 1.树的定义 2.树的有关术语 3.二叉树(BinaryTree) 二叉树的性质: 特殊的二叉树 满二叉树: 完全二叉树 二叉树的存储结构 顺序存储结构 链式存储结构 二叉树以及对应接口的实现 1.二叉树架构搭建 2…

关于 Microsoft Visual Studio

关于 Microsoft Visual Studio References References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

hive学习记录

问题集合 Q:终端启动hive时报错:/tmp/hive on HDFS should be writable? A:hdfs dfs -chmod 777 /tmp/hive Q:hive: unable to create database path file…错误 A:在hive-site.xml里面添加以…

【机器学习300问】47、如何计算AUC?

一、AUC是什么? (1)文绉绉的定义 AUCArea Under the Curve中文直译叫“曲线下面积”,AUC名字里面的Curve曲线指的就是ROC曲线,关于ROC曲线的相关知识我已经在之前的文章中详细说过了,有需要的友友可以点击…

CI/CI实战-jenkis结合gitlab 4

实时触发 安装gitlab插件 配置项目触发器 生成令牌并保存 配置gitlab 测试推送 gitlab的实时触发 添加jenkins节点 在jenkins节点上安装docker-ce 新建节点server3 安装git和jdx 在jenkins配置管理中添加节点并配置从节点 关闭master节点的构建任务数

[Java安全入门]六.CC3

一.前言 前几天学了一下cc1和cc6,对于我来说有点小困难,不过经过几天沉淀,现在也是如拨开云雾见青天,经过一上午的复习对cc1和cc6又有深入的了解。所以,今天想多学一下cc3。cc3执行命令的方式与cc1和cc6不一样&#x…

C#基础-标识符命名规则

目录 1、标识符定义 2、遵循规则 3、标识符的例子 4、MSDN中英文解释 英文

Debezium日常分享系列之:Debezium2.5稳定版本之Monitoring

Debezium日常分享系列之:Debezium2.5稳定版本之Monitoring 一、Snapshot metrics二、Streaming metrics三、Schema history metrics Debezium系列之:安装jmx导出器监控debezium指标 除了 Zookeeper、Kafka 和 Kafka Connect 提供的对 JMX 指标的内置支持…

革新水库大坝监测:传统软件与云平台之比较

在水库大坝的监测管理领域,传统监测软件虽然曾发挥了重要作用,但在多方面显示出了其局限性。传统解决方案通常伴随着高昂的运维成本,需要大量的硬件支持和人员维护,且软件整合和升级困难,限制了其灵活性和扩展性。 点击…

Neo4j桌面版导入CVS文件

之后会出来一个提示框,而且会跳出相关文件夹: 然后我们将CSV文件放在此目录下: 我们的relation.csv是这样的 参见: NEO4J的基本使用以及桌面版NEO4J Desktop导入CSV文件_neo4j desktop使用-CSDN博客

C++11:左值与右值|移动构造|移动赋值

​ 🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:マイノリティ脈絡—ずっと真夜中でいいのに。 0:24━━━━━━️💟──────── 4:02 🔄 …

MySQL表内容的增删查改

在前面几章的内容中我们学习了数据库的增删查改,表的增删查改,这一篇我们来学习一下对表中的内容做增删查改。 CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) 1.创建Create 我们先创建…