PyTorch各种损失函数解析:深度学习模型优化的关键(1)

目录

详解pytorch中各种Loss functions

binary_cross_entropy

用途

用法

参数

数学理论

示例代码

binary_cross_entropy_with_logits

用途

用法

参数

数学理论

示例代码

poisson_nll_loss

用途

用法

参数

数学理论

示例代码

cosine_embedding_loss

用途

用法

参数

数学理论

示例代码

cross_entropy

用途

用法

参数

数学理论

示例代码

ctc_loss

用途

用法

参数

数学理论

示例代码

gaussian_nll_loss

用途

用法

参数

数学理论

示例代码

hinge_embedding_loss

用途

用法

参数

数学理论

示例代码

kl_div

用途

用法

参数

数学理论

示例代码

注意

l1_loss

用途

用法

参数

数学理论

示例代码

总结


详解pytorch中各种Loss functions

binary_cross_entropy

torch.nn.functional.binary_cross_entropy 是 PyTorch 中用于测量目标和输入概率之间的二元交叉熵(Binary Cross Entropy, BCE)的函数。这个函数在二分类问题中非常重要,特别是在处理神经网络的输出层时,它用于评估模型的预测准确度。

用途

  • 用于二分类问题中,评估模型对正类和负类的预测准确性。
  • 常用于神经网络的输出层,特别是在处理概率输出时。

用法

torch.nn.functional.binary_cross_entropy(input, target, weight=None, size_average=None, reduce=None, reduction='mean')

 

  • input: 输入张量,表示预测的概率。
  • target: 目标张量,具有与输入相同的形状,值在0和1之间。
  • weight: 可选,手动重新缩放权重张量。
  • reduction: 指定输出的降维方式,可以是 'none'、'mean' 或 'sum'。

参数

  • input (Tensor): 预测概率的张量。
  • target (Tensor): 目标张量,与输入形状相同,值在0到1之间。
  • weight (Tensor, 可选): 手动重新缩放权重,匹配输入张量的形状。
  • reduction (str, 可选): 输出的降维方式,'none'、'mean' 或 'sum'。

数学理论

二元交叉熵的计算公式为:

loss=-\frac{1}{N}\sum_{i=1}^{N}[y_{i}\cdot log(p_{i})+(1-y_{i})\cdot log(1-p_{i})]

其中:

  • N 是样本数量。
  • yi​ 是目标值,即 target 中的元素。
  • pi​ 是预测概率,即 input 中的元素。

示例代码

import torch
import torch.nn.functional as F# 定义输入和目标张量
input = torch.randn(3, 2, requires_grad=True)
target = torch.rand(3, 2)# 计算二元交叉熵损失
loss = F.binary_cross_entropy(torch.sigmoid(input), target)# 反向传播
loss.backward()# 打印损失值
print(loss)

这段代码将输出一个标量值,代表整个批次的平均二元交叉熵损失。由于输入是随机生成的,输出的损失值也会随机变化。 

binary_cross_entropy_with_logits

torch.nn.functional.binary_cross_entropy_with_logits 是 PyTorch 中的一个函数,用于测量目标(target)和输入对数几率(logits)之间的二元交叉熵(Binary Cross Entropy)。这个函数对于包含未归一化分数(logits)的二分类问题非常有用,特别是在处理神经网络的输出层时。

用途

  • 主要用于二分类问题,尤其当模型的输出是未归一化的分数(即 logits)时。
  • 通常用于神经网络的输出层,以计算模型预测的准确性。

用法

torch.nn.functional.binary_cross_entropy_with_logits(input, target, weight=None, size_average=None, reduce=None, reduction='mean', pos_weight=None)
  • input: 输入张量,表示未归一化的分数(logits)。
  • target: 目标张量,与输入形状相同,值在0和1之间。
  • weight: 可选,手动重新缩放权重张量。
  • reduction: 指定输出的降维方式,可以是 'none'、'mean' 或 'sum'。
  • pos_weight: 正例的权重张量,用于调整正例的重要性。

参数

  • input (Tensor): 未归一化分数(logits)的张量。
  • target (Tensor): 目标张量,与输入形状相同,值在0到1之间。
  • weight (Tensor, 可选): 手动重新缩放权重,匹配输入张量的形状。
  • reduction (str, 可选): 输出的降维方式,'none'、'mean' 或 'sum'。
  • pos_weight (Tensor, 可选): 正例的权重张量,用于调整正例在损失计算中的重要性。

数学理论

二元交叉熵的计算公式为:

loss = -(pos_weight * target * log(sigmoid(input)) + (1 - target) * log(1 - sigmoid(input)))

如果 reduction='mean',则对所有元素的损失取平均值。如果 reduction='sum',则对损失求和。

示例代码

import torch
import torch.nn.functional as F# 定义输入和目标张量
input = torch.randn(3, requires_grad=True)
target = torch.empty(3).random_(2)# 计算二元交叉熵损失(带对数几率)
loss = F.binary_cross_entropy_with_logits(input, target)# 反向传播
loss.backward()# 打印损失值
print(loss)

这段代码将输出一个标量值,代表整个批次的平均二元交叉熵损失(带对数几率)。由于输入是随机生成的,输出的损失值也会随机变化。

poisson_nll_loss

torch.nn.functional.poisson_nll_loss 是 PyTorch 中的一个函数,用于计算泊松负对数似然损失(Poisson Negative Log Likelihood Loss)。这个函数主要用于模型输出是泊松分布参数的情况,例如在某些类型的计数数据或事件率建模中。

用途

  • 用于处理模型输出为泊松分布期望值的场景,如事件计数或率的预测。
  • 在处理计数数据或任何泊松分布数据时,评估模型的预测准确性。

用法

torch.nn.functional.poisson_nll_loss(input, target, log_input=True, full=False, size_average=None, eps=1e-08, reduce=None, reduction='mean')
  • input: 输入张量,表示泊松分布的期望。
  • target: 目标张量,是泊松分布的随机样本。
  • log_input: 如果为True,则按 exp(input) - target * input 计算损失;如果为False,则按 input - target * log(input + eps) 计算。
  • full: 是否计算完整的损失,包括斯特林近似项。
  • eps: 避免当 log_input=False 时对数为零的小值。
  • reduction: 指定输出的降维方式,可以是 'none'、'mean' 或 'sum'。

参数

  • input (Tensor): 泊松分布的期望张量。
  • target (Tensor): 与输入形状相同的目标张量,表示泊松分布的样本。
  • log_input (bool): 计算损失的方式,默认为True。
  • full (bool): 是否计算完整的损失,包括斯特林近似项,默认为False。
  • eps (float, 可选): 避免对数为零的小值,默认为1e-8。
  • reduction (str, 可选): 输出的降维方式,'none'、'mean' 或 'sum'。

数学理论

log_input=True 时,损失计算为:

loss = exp(input) - target * input

 当 log_input=False 时,损失计算为:

loss = input - target * log(input + eps)

如果 full=True,则在损失中加入斯特林近似项:

stirling = target * log(target) - target + 0.5 * log(2 * pi * target)

损失最后根据 reduction 参数进行降维。

示例代码

import torch
import torch.nn.functional as F# 定义输入和目标张量
input = torch.randn(3, requires_grad=True)
target = torch.empty(3).random_(2)# 计算泊松负对数似然损失
loss = F.poisson_nll_loss(input, target)# 反向传播
loss.backward()# 打印损失值
print(loss)

这段代码将输出一个标量值,代表整个批次的平均泊松负对数似然损失。由于输入是随机生成的,输出的损失值也会随机变化。

cosine_embedding_loss

torch.nn.functional.cosine_embedding_loss 是 PyTorch 中的一个函数,用于计算两个输入张量之间的余弦嵌入损失。这个函数主要用于学习两个输入之间的相似度或不相似度,尤其适用于那些需要通过余弦相似度来度量的任务,例如在某些类型的比较或匹配任务中。

用途

  • 用于测量两个输入的相似性或不相似性,基于它们的余弦相似度。
  • 常用于训练过程中,以确保相似的样本更接近,而不相似的样本更远离。

用法

torch.nn.functional.cosine_embedding_loss(input1, input2, target, margin=0, size_average=None, reduce=None, reduction='mean')
  • input1: 第一个输入张量。
  • input2: 第二个输入张量。
  • target: 包含1或-1的张量,1表示两个输入是相似的,-1表示不相似。
  • margin: 用于不相似样本的边界值。
  • reduction: 指定输出的降维方式,可以是 'none'、'mean' 或 'sum'。

参数

  • input1 (Tensor): 第一个输入张量。
  • input2 (Tensor): 第二个输入张量。
  • target (Tensor): 目标张量,其中1表示两个输入是相似的,-1表示不相似。
  • margin (float): 不相似样本的边界值。
  • reduction (str, 可选): 输出的降维方式,'none'、'mean' 或 'sum'。

数学理论

余弦嵌入损失的计算方式取决于目标标签:

  • target == 1,表示两个输入是相似的,损失计算为 1 - cos_similarity(input1, input2)
  • target == -1,表示两个输入是不相似的,损失计算为 max(0, cos_similarity(input1, input2) - margin)

示例代码

import torch
import torch.nn.functional as F# 定义输入张量
input1 = torch.randn(3, 128, requires_grad=True)
input2 = torch.randn(3, 128, requires_grad=True)
target = torch.tensor([1, -1, 1])# 计算余弦嵌入损失
loss = F.cosine_embedding_loss(input1, input2, target)# 反向传播
loss.backward()# 打印损失值
print(loss)

这段代码将输出一个标量值,代表整个批次的平均余弦嵌入损失。由于输入是随机生成的,输出的损失值也会随机变化。 

cross_entropy

torch.nn.functional.cross_entropy 是 PyTorch 中的一个函数,用于计算输入对数几率(logits)和目标之间的交叉熵损失。这个函数在多分类问题中非常重要,特别是在处理神经网络的输出层时,它用于评估模型的预测准确度。

用途

  • 用于多分类问题中,评估模型对各个类别的预测准确性。
  • 常用于神经网络的输出层,特别是在处理未归一化的分数(logits)时。

用法

torch.nn.functional.cross_entropy(input, target, weight=None, ignore_index=-100, reduction='mean', label_smoothing=0.0)
  • input: 预测的未归一化对数概率,即 logits。
  • target: 目标类别索引或类别概率。
  • weight: 可选,给每个类别分配的手动重新缩放权重。
  • ignore_index: 忽略的目标值,不会对输入梯度产生影响。
  • reduction: 指定输出的降维方式,可以是 'none'、'mean' 或 'sum'。
  • label_smoothing: 标签平滑的程度,范围在 0.0 到 1.0 之间。

参数

  • input (Tensor): 预测的未归一化对数概率(logits)。
  • target (Tensor): 目标类别索引或类别概率。
  • weight (Tensor, 可选): 类别的权重。
  • ignore_index (int, 可选): 要忽略的目标值。
  • reduction (str, 可选): 输出的降维方式,'none'、'mean' 或 'sum'。
  • label_smoothing (float, 可选): 标签平滑的程度。

数学理论

交叉熵损失的计算公式为:

loss = -sum(target * log(softmax(input))) / N
  • target: 目标类别标签。
  • input: 预测的对数概率(logits)。
  • N: 样本数量。

示例代码

import torch
import torch.nn.functional as F# 示例:目标为类别索引
input = torch.randn(3, 5, requires_grad=True)
target = torch.randint(5, (3,), dtype=torch.int64)
loss = F.cross_entropy(input, target)
loss.backward()# 示例:目标为类别概率
input = torch.randn(3, 5, requires_grad=True)
target = torch.randn(3, 5).softmax(dim=1)
loss = F.cross_entropy(input, target)
loss.backward()

这两段代码分别计算了类别索引和类别概率作为目标时的交叉熵损失,并执行了反向传播。由于输入是随机生成的,输出的损失值也会随机变化。 

ctc_loss

torch.nn.functional.ctc_loss 是 PyTorch 中用于计算连接主义时序分类(Connectionist Temporal Classification, CTC)损失的函数。CTC损失在处理序列数据,特别是在语音识别或任何需要对输入序列到目标序列的对齐的任务中非常有用。

用途

  • 用于序列对齐问题,特别是在语音识别、手写识别等领域。
  • 适用于处理长度不同的输入和目标序列。

用法

torch.nn.functional.ctc_loss(log_probs, targets, input_lengths, target_lengths, blank=0, reduction='mean', zero_infinity=False)
  • log_probs: 输入的对数概率,通常用 torch.nn.functional.log_softmax() 获得。
  • targets: 目标序列。
  • input_lengths: 输入序列的长度。
  • target_lengths: 目标序列的长度。
  • blank: 空白标签的索引,默认为0。
  • reduction: 指定损失输出的降维方式,可以是 'none'、'mean' 或 'sum'。
  • zero_infinity: 是否将无限损失及其梯度归零。

参数

  • log_probs (Tensor): 形状为 (T, N, C) 的张量,其中 C 是字符集大小(包括空白),T 是输入长度,N 是批次大小。
  • targets (Tensor): 形状为 (N, S) 或总长度为 sum(target_lengths) 的张量,表示目标序列。
  • input_lengths (Tensor): 长度为 N 的张量,表示每个输入的长度。
  • target_lengths (Tensor): 长度为 N 的张量,表示每个目标序列的长度。
  • blank (int, 可选): 空白标签的索引。
  • reduction (str, 可选): 输出的降维方式。
  • zero_infinity (bool, 可选): 是否将无限损失及其梯度归零。

数学理论

CTC损失在给定输入序列和目标序列时,计算所有可能的对齐方式的概率,并将这些概率的负对数求和。

示例代码

import torch
import torch.nn.functional as F# 定义输入对数概率、目标序列、输入和目标序列的长度
log_probs = torch.randn(50, 16, 20).log_softmax(2).detach().requires_grad_()
targets = torch.randint(1, 20, (16, 30), dtype=torch.long)
input_lengths = torch.full((16,), 50, dtype=torch.long)
target_lengths = torch.randint(10, 30, (16,), dtype=torch.long)# 计算CTC损失
loss = F.ctc_loss(log_probs, targets, input_lengths, target_lengths)# 反向传播
loss.backward()

这段代码将计算CTC损失,并执行反向传播。输出是一个标量值,代表根据 reduction 参数计算得到的损失。由于输入是随机生成的,输出的损失值也会随机变化。 

gaussian_nll_loss

torch.nn.functional.gaussian_nll_loss 是 PyTorch 中用于计算高斯负对数似然损失(Gaussian Negative Log Likelihood Loss)的函数。这个函数主要用于处理具有高斯分布特性的数据,例如在某些回归问题中,当你希望模型预测值的分布不仅包含均值(mean)而且包含方差(variance)时。

用途

  • 用于回归问题,特别是当预测的不确定性很重要时。
  • 适用于建模具有高斯(正态)分布噪声的数据。

用法

torch.nn.functional.gaussian_nll_loss(input, target, var, full=False, eps=1e-06, reduction='mean')
  • input: 高斯分布的期望(均值)。
  • target: 高斯分布的样本。
  • var: 高斯分布的方差,可以是每个输入期望的方差(异方差),或一个单一的方差(同方差)。
  • full: 是否包含常数项在损失计算中。
  • eps: 加到方差上的小值,用于稳定性。
  • reduction: 指定输出的降维方式,可以是 'none'、'mean' 或 'sum'。

参数

  • input (Tensor): 高斯分布的期望张量。
  • target (Tensor): 高斯分布的样本张量。
  • var (Tensor): 高斯分布的方差张量。
  • full (bool, 可选): 是否包含常数项在损失计算中。
  • eps (float, 可选): 加到方差上的小值,用于稳定性。
  • reduction (str, 可选): 输出的降维方式。

数学理论

高斯负对数似然损失的计算公式为:

loss = 0.5 * (log(var) + (target - input)^2 / (var + eps))

如果 full=True,则在损失中加入常数项。

示例代码

import torch
import torch.nn.functional as F# 定义输入(期望)、目标和方差张量
input = torch.randn(3, requires_grad=True)
target = torch.randn(3)
var = torch.ones(3) * 0.5# 计算高斯负对数似然损失
loss = F.gaussian_nll_loss(input, target, var)# 反向传播
loss.backward()# 打印损失值
print(loss)

这段代码将计算高斯负对数似然损失,并执行反向传播。输出是一个标量值,代表根据 reduction 参数计算得到的损失。由于输入是随机生成的,输出的损失值也会随机变化。 

hinge_embedding_loss

torch.nn.functional.hinge_embedding_loss 是 PyTorch 中用于计算铰链嵌入损失(Hinge Embedding Loss)的函数。这种损失函数通常用于学习距离度量,尤其在处理一些涉及相似性和不相似性学习的任务中,如孪生网络或对比学习。

用途

  • 用于训练过程中,以确保相似的样本更接近,而不相似的样本更远离。
  • 适用于一些需要区分相似与不相似样本的任务,例如人脸识别、签名验证等。

用法

torch.nn.functional.hinge_embedding_loss(input, target, margin=1.0, size_average=None, reduce=None, reduction='mean')
  • input: 输入张量,通常是两个样本之间的距离。
  • target: 目标张量,其中1表示正样本对(相似),-1表示负样本对(不相似)。
  • margin: 用于不相似样本对的边界值。
  • reduction: 指定输出的降维方式,可以是 'none'、'mean' 或 'sum'。

参数

  • input (Tensor): 输入张量,通常是样本对之间的距离。
  • target (Tensor): 目标张量,包含1(相似)和-1(不相似)。
  • margin (float): 不相似样本对的边界值。
  • reduction (str, 可选): 输出的降维方式,'none'、'mean' 或 'sum'。

数学理论

铰链嵌入损失的计算方式取决于目标标签:

  • target == 1(相似),损失计算为 max(0, input)
  • target == -1(不相似),损失计算为 max(0, margin - input)

示例代码

import torch
import torch.nn.functional as F# 定义输入张量和目标张量
input = torch.randn(10, requires_grad=True)
target = torch.tensor([1, -1, 1, 1, -1, -1, 1, 1, -1, -1], dtype=torch.float)# 计算铰链嵌入损失
loss = F.hinge_embedding_loss(input, target)# 反向传播
loss.backward()# 打印损失值
print(loss)

这段代码将计算铰链嵌入损失,并执行反向传播。输出是一个标量值,代表整个批次的平均损失。由于输入是随机生成的,输出的损失值也会随机变化。 

kl_div

torch.nn.functional.kl_div 是 PyTorch 中用于计算两个概率分布之间的Kullback-Leibler(KL)散度的函数。KL散度是衡量两个概率分布相似性的常用方法,在机器学习和统计建模中广泛应用,特别是在评估模型预测概率分布与实际概率分布之间的差异时。

用途

  • 用于衡量两个概率分布之间的差异或不相似性。
  • 常用于生成模型,如变分自编码器(VAE)或在模型校准中评估预测概率分布。

用法

torch.nn.functional.kl_div(input, target, size_average=None, reduce=None, reduction='mean', log_target=False)
  • input: 输入张量,代表对数概率分布。
  • target: 目标张量,与输入形状相同。
  • log_target: 标志,指示目标是否在对数空间中传递。
  • reduction: 指定输出的降维方式,可以是 'none'、'batchmean'、'sum' 或 'mean'。

参数

  • input (Tensor): 输入张量,代表对数概率分布。
  • target (Tensor): 目标张量,与输入形状相同。
  • log_target (bool, 可选): 目标是否在对数空间中。
  • reduction (str, 可选): 输出的降维方式,'none'、'batchmean'、'sum' 或 'mean'。

数学理论

KL散度的计算公式为:

KL(P || Q) = sum(P(x) * (log(P(x)) - log(Q(x))))

其中 P 是目标分布,Q 是输入分布。

示例代码

import torch
import torch.nn.functional as F# 定义输入对数概率和目标概率
input = torch.log_softmax(torch.randn(3, 5), dim=1)
target = torch.softmax(torch.randn(3, 5), dim=1)# 计算KL散度
loss = F.kl_div(input, target, reduction='batchmean')# 打印损失值
print(loss)

这段代码将计算KL散度,并输出一个标量值,代表根据 reduction 参数计算得到的损失。由于输入是随机生成的,输出的损失值也会随机变化。

注意

  • size_averagereduce 已被弃用,应使用 reduction 参数。
  • reduction='mean' 时,不会返回真正的KL散度值。建议使用 reduction='batchmean',这与KL散度的数学定义相符。

l1_loss

torch.nn.functional.l1_loss 是 PyTorch 中用于计算L1损失(也称为平均绝对误差(MAE)损失)的函数。L1损失是一种常用的损失函数,用于衡量预测值和实际值之间的差异,特别是在回归问题中。

用途

  • 用于回归问题中,计算预测值与实际值之间的差异。
  • 在处理异常值时比平方误差(L2损失)更稳健。

用法

torch.nn.functional.l1_loss(input, target, size_average=None, reduce=None, reduction='mean')
  • input: 输入张量,通常是模型的预测值。
  • target: 目标张量,即实际值。
  • reduction: 指定输出的降维方式,可以是 'none'、'mean' 或 'sum'。

参数

  • input (Tensor): 输入张量,代表预测值。
  • target (Tensor): 目标张量,代表实际值。
  • reduction (str, 可选): 输出的降维方式,'none'、'mean' 或 'sum'。

数学理论

L1损失的计算公式为:

L1_loss = mean(abs(input - target))
  • abs(...) 表示绝对值。
  • mean(...) 表示求平均值。

示例代码

import torch
import torch.nn.functional as F# 定义输入(预测值)和目标(实际值)张量
input = torch.randn(3, 2, requires_grad=True)
target = torch.randn(3, 2)# 计算L1损失
loss = F.l1_loss(input, target)# 反向传播
loss.backward()# 打印损失值
print(loss)

这段代码将计算L1损失,并执行反向传播。输出是一个标量值,代表整个批次的平均L1损失。由于输入是随机生成的,输出的损失值也会随机变化。 

总结

本博客介绍了PyTorch中多种损失函数的应用和原理,包括二元交叉熵损失(BCE和BCE with logits)、泊松负对数似然损失、余弦嵌入损失、交叉熵损失、连接主义时序分类(CTC)损失、高斯负对数似然损失、铰链嵌入损失、Kullback-Leibler(KL)散度损失和L1损失。每种损失函数都有其特定的应用场景,从简单的二分类问题到复杂的序列对齐和概率分布比较,这些损失函数在深度学习模型的训练过程中发挥着关键作用。通过对这些损失函数的理解和应用,可以更好地设计和优化神经网络模型,以解决各种不同的机器学习问题。

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

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

相关文章

揭秘程序栈:你的代码在幕后是怎么运行的?

计算机科学中,许多概念和原理可能会让开发者感到头疼,比如程序栈。这个看似晦涩的概念,实对我们理解程序运行至关重要。本文将以通俗易懂的方式,带你深入理解程序栈的工作原理和优化策略。 一、为什么需要栈? 栈是一…

Diffusion Models

DDPM x 0 ∼ q ( x 0 ) x_0 \sim q(x_0) x0​∼q(x0​)是真实数据分布,扩散模型学习一个分布 p θ ( x 0 ) p_\theta(x_0) pθ​(x0​)去逼近真实数据分布。 p θ ( x 0 ) : ∫ p θ ( x 0 : T ) d x 1 : T (1) p_\theta(x_0) : \int p_\theta(x_{0:T})dx_{1:T} \…

chatgpt的实用技巧四temperature 格式

四、temperature 格式 GPT3.5 temperature 的范围为:0-0.7; GPT4.0 temperature 的范围为:0-1; 当 temperature 为 0 时候,结果可稳定。 当 temperature 为 0.7/1 时候,结果发散具备创力。 数值越大&a…

设计模式的学习笔记

设计模式的学习笔记 一. 设计模式相关内容介绍 1 设计模式概述 1.1 软件设计模式的产生背景 设计模式最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977 年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任 Christopher Alexander 在…

【Redis数据类型】String实现及应用场景

文章目录 String1、介绍2、内部实现整数值embstr 编码字符串raw编码字符串 3、常用命令4、应用场景缓存对象常规计数分布式锁共享session信息 参考:小林Coding Redis九种数据类型 Redis 提供了丰富的数据类型,常见的有五种:String&#xff08…

Debian 10.13.0 安装图解

引导和开始安装 这里直接回车确认即可,选择图形化安装方式。 选择语言 这里要区分一下,当前选中的语言作为安装过程中安装器所使用的语言,这里我们选择中文简体。不过细心的同学可能发现,当你选择安装器语言之后,后续安…

电力能源三维可视化合集 | 图扑数字孪生

电力能源是现代社会发展和运行的基石,渗透于工业、商业、农业、家庭生活等方方面面,它为经济、生活质量、环境保护和社会发展提供了巨大的机会和潜力。图扑软件应用自研 HT for Web 强大的渲染引擎,助力现代化的电力能源数字孪生场景&#xf…

运筹说 第95期 | 非线性规划奠基人——库恩与塔克

经过之前的学习,相信大家已经对运筹学的网络计划的内容有了一定的了解,接下来小编将带你学习新一章——非线性规划的内容,让我们先来了解一下非线性规划的诞生和发展历程,然后共同走近非线性规划领域的代表人物——库恩和塔克&…

2.控制语句

1.分支语句/判断语句 if 语句 if(boolean_expression) { /* 如果布尔表达式为真将执行的语句 */ } if…else 语句 if(boolean_expression) { /* 如果布尔表达式为真将执行的语句 / } else { / 如果布尔表达式为假将执行的语句 */ } if…else if…else语句 if(boolean_expressi…

【BERT】详解

BERT 简介 BERT 是谷歌在 2018 年时提出的一种基于 Transformer 的双向编码器的表示学习模型,它在多个 NLP 任务上刷新了记录。它利用了大量的无标注文本进行预训练,预训练任务有掩码语言模型和下一句预测,掩码语言模型指的是随机地替换文本中…

Python基础学习:同步异步阻塞与非阻塞

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 一、状态介绍 在了解其他概念之前,我们首先要了解进程的几个状态。 在程序运行的过程中,由于被操作系统的调度算法控制,程序…

k8s---pod控制器

pod控制器发的概念: 工作负载,workload用于管理pod的中间层,确保pod资源符合预期的状态。 预期状态: 1、副本数 2、容器重启策略 3、镜像拉取策略 pod出故障的出去等等 pod控制器的类型: 1、replicaset&#xf…

可达性分析

可达性分析 这个算法的基本思路就是通过 一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过 程所走过的路径称为“引用链”(Reference Chain),如果某个对象到GC …

力扣22. 括号生成

回溯 思路&#xff1a; 定义函数 dfs(item, open, close, n) 表示当前 item 有左括号个数 open 和右括号个数 close &#xff1b;使用递归&#xff0c;长度为 n 的序列就是在长度为 n - 1 的序列后加左括号或者右括号&#xff1a; 先放左括号&#xff0c;只要其个数 < n&am…

SSL证书自动化管理有什么好处?如何实现SSL证书自动化?

SSL证书是用于加密网站与用户之间传输数据的关键元素&#xff0c;在维护网络安全方面&#xff0c;管理SSL证书与部署SSL证书一样重要。定期更新、监测和更换SSL证书&#xff0c;可以确保网站的安全性和合规性。而自动化管理可以为此节省时间&#xff0c;并避免人为错误和不必要…

微信原生小程序上传与识别以及监听多个checkbox事件打开pdf

1.点击上传并识别 组件样式<van-field border"{{ false }}" placeholder"请输入银行卡卡号" model:value"{{bankNo}}" label"卡号"><van-icon bindtap"handleChooseImg" slot"right-icon" name"sca…

IDEA中启动项目报堆内存溢出或者没有足够内存的错误

1.报错现象 java.lang.OutOfMemoryError: Java heap space 或者 Could not reserve enough space for object heap 2.解决办法 在运行配置中VM选项后加下面的配置&#xff1a; -server -XX:MaxHeapSize256m -Xms512m -Xmx512m -XX:PermSize128M -XX:MaxPermSize256m 3.JVM虚…

单表查询练习

目录 题目&#xff1a; 制定约束&#xff1a; 添加表格信息&#xff1a; 所需查询的信息&#xff1a; 实验步骤&#xff1a; 第一步&#xff1a;制作表格 创建新的数据库 创建表格约束&#xff1a; 为表格加入数据&#xff1a; 第二步&#xff1a;查询信息 题目&…

Red Hat Enterprise Linux 7.9 安装图解

引导和开始安装 选择倒计时结束前&#xff0c;通过键盘上下键选择下图框选项&#xff0c;启动图形化安装过程。 安装语言选择 这里要区分一下&#xff0c;当前选中的语言作为安装过程中安装器所使用的语言&#xff0c;这里我们选择中文简体。不过细心的同学可能发现&#xff0c…

OpenGL ES之深入解析如何绘制“跳动的心“特效

最近在浏览技术网站时,偶然间发现如下这个"跳动的心"特效,觉得蛮好玩的,当得知这个特效是用纯代码实现(GLSL 实现)的,确实又被惊到:追溯该特效最初的来源,最终在 ShaderToy 网站看到它的原始实现,另外在 ShaderToy 上还发现了无数类似惊人的特效,并且这些特…