必知!5大AI生成模型

news2024/9/21 21:15:55

大数据文摘授权转载自数据分析及应用

随着Sora、diffusion等模型的大热,深度生成模型再次成为了研究的焦点。这类模型,作为强大的机器学习工具,能够从输入数据中学习其潜在的分布,并生成与训练数据高度相似的新样本。其应用领域广泛,包括计算机视觉、密度估计、自然语言和语音识别等,为无监督学习提供了新的思路和方法。

本文将对几种常用的深度生成模型进行详细介绍,分析不同生成模型的原理差异及联系:VAE(变分自编码器)、GAN(生成对抗网络)、AR(自回归模型 如Transformer)、Flow(流模型)和Diffusion(扩散模型)。

VAE(变分自编码器)

VAE是在自编码器的基础上,融合了变分推断和贝叶斯理论,旨在学习一个能够生成与训练数据相似样本的模型。VAE假设隐变量遵循某种先验分布(如标准正态分布),并通过编码器将输入数据映射到隐变量的后验分布,再通过解码器将隐变量还原为生成样本。在训练过程中,VAE需要同时优化重构误差和KL散度。

具体来说,VAE的训练过程如下:

  1. 编码器:将输入数据x编码为隐变量z的均值μ和标准差σ。

  2. 采样:从标准正态分布中采样一个ε,通过μ和σ计算z = μ + ε* σ。

  3. 解码器:将z解码为生成样本x’。

  4. 计算重构误差(如均方误差MSE)和KL散度,并通过优化算法调整模型参数,以最小化两者的和。

VAE的优点在于:

  • 能够生成多样化的样本。

  • 隐变量具有明确的概率解释。

然而,VAE也存在一些缺点:

  • 训练过程可能不稳定。

  • 生成样本的质量可能不如其他模型。

尽管如此,VAE仍在许多场景中发挥着重要作用,如数据生成与插值、特征提取与降维等。

以下是一个使用PyTorch实现的VAE的简单示例代码:

Python
import torch``import torch.nn as nn``import torch.optim as optim``   ``class VAE(nn.Module):`    `def __init__(self, input_dim, hidden_dim):`        `super(VAE, self).__init__()`        `self.encoder = nn.Sequential(`            `nn.Linear(input_dim, hidden_dim),`            `nn.ReLU(),`            `nn.Linear(hidden_dim, 2 * hidden_dim)  # 均值和标准差`        `)`        `self.decoder = nn.Sequential(`            `nn.Linear(hidden_dim, hidden_dim),`            `nn.ReLU(),`            `nn.Linear(hidden_dim, input_dim),`            `nn.Sigmoid()  # 对于二值数据,使用Sigmoid激活函数`        `)``   `    `def reparameterize(self, mu, logvar):`        `std = torch.exp(0.5 * logvar)`        `eps = torch.randn_like(std)`        `return mu + eps * std``   `    `def forward(self, x):`        `h = self.encoder(x)`        `# ... (此处省略了后续步骤,包括采样、解码和损失计算等)`` ```mu, logvar = h.chunk(2, dim=-1) ``z = self.reparameterize(mu, logvar)``x_recon = self.decoder(z)``return x_recon, mu, logvar``   ``# 训练过程示例``model = VAE(input_dim=784, hidden_dim=400)``optimizer = optim.Adam(model.parameters(), lr=1e-3)``   ``# 假设x代表输入数据,batch_size表示批次大小``x = torch.randn(batch_size, 784)``recon_x, mu, logvar = model(x)``   ``# 计算损失函数``loss = nn.functional.binary_cross_entropy(recon_x, x, reduction='sum') \`       `+ 0.5 * torch.sum(torch.exp(logvar) + mu.pow(2) - 1 - logvar)``   ``# 梯度清零,反向传播,并更新权重``optimizer.zero_grad()``loss.backward()``optimizer.step()

GAN(生成对抗网络)

算法原理:

GAN由两部分精心构建:生成器(Generator)和判别器(Discriminator)。生成器的使命是创造出与真实数据难以分辨的假数据,而判别器的职责是明察秋毫,判断输入的数据是源自真实世界还是生成器的伪造品。二者在相互的较量和合作中共同进步,直至生成器能够创作出几乎与真实数据无异的样本。

训练流程:

  1. 判别器接受真实数据与生成器的伪造品,进行二分类训练,旨在提升其辨别真伪的能力。

  2. 生成器则倾听判别器的反馈,致力于生产更加逼真的假数据,以期蒙蔽判别器的双眼。

  3. 判别器和生成器轮流接受训练,直至判别器难辨真假,或是达到预定的训练轮数。

优势:

  • 能够生成高质量的样本数据。

  • 训练过程灵活自由,不受特定数据分布的束缚。

不足:

  • 训练过程波动较大,易于陷入局部最优解。

  • 需要消耗大量的计算资源。

应用场景:

  • 图像生成。

  • 文本创作。

  • 语音识别等多元化领域。

Python示例代码(基于PyTorch实现):

Python
import torch``import torch.nn as nn``import torch.optim as optim``   ``# 判别器``class Discriminator(nn.Module):`    `def __init__(self, input_dim):`        `super(Discriminator, self).__init__()`        `self.fc = nn.Sequential(`            `nn.Linear(input_dim, 128),`            `nn.LeakyReLU(0.2),`            `nn.Linear(128, 1),`            `nn.Sigmoid()`        `)``   `    `def forward(self, x):`        `return self.fc(x)``   ``# 生成器``class Generator(nn.Module):`    `def __init__(self, input_dim, output_dim):`        `super(Generator, self).__init__()`        `self.fc = nn.Sequential(`            `nn.Linear(input_dim, 128),`            `nn.ReLU(),`            `nn.Linear(128, output_dim),`            `nn.Tanh()`        `)``   `    `def forward(self, x):`        `return self.fc(x)``   ``# 示例训练流程``real_data = ...  # 假设此处为真实数据``batch_size = ...  # 假设此处为批次大小``   ``discriminator = Discriminator(input_dim=784)``generator = Generator(input_dim=100, output_dim=784)``optimizer_D = optim.Adam(discriminator.parameters(), lr=0.0002)``optimizer_G = optim.Adam(generator.parameters(), lr=0.0002)``criterion = nn.BCEWithLogitsLoss()

AR(自回归模型)

算法原理:自回归模型,一种基于序列数据的生成模型,其核心在于通过预测序列中下一个元素的值来生成数据。给定序列(x_1, x_2, …, x_n),该模型致力于学习条件概率分布P(x_t | x_{t-1}, …, x_1),其中(t)表示序列中的当前位置。自回归模型可通过循环神经网络(RNN)或Transformer等结构实现,其显著特点在于能精准捕捉序列数据的时序依赖关系,并生成时序一致的样本。

在深度学习的早期阶段,卷积神经网络(CNN)在图像识别和自然语言处理领域取得了显著的成功。然而,随着任务复杂度的增加,序列到序列(Seq2Seq)模型和循环神经网络(RNN)成为处理序列数据的常用方法。尽管RNN及其变体在某些任务上表现良好,但它们在处理长序列时容易遇到梯度消失和模型退化问题。为了解决这些问题,Transformer模型被提出。而后的GPT、Bert等大模型都是基于Transformer实现了卓越的性能!

模型原理:

Transformer模型精巧地结合了编码器和解码器两大部分,每一部分均由若干相同构造的“层”堆叠而成。这些层巧妙地将自注意力子层与线性前馈神经网络子层结合在一起。自注意力子层巧妙地运用点积注意力机制,为每个位置的输入序列编织独特的表示,而线性前馈神经网络子层则汲取自注意力层的智慧,产出富含信息的输出表示。值得一提的是,编码器和解码器各自装备了一个位置编码层,专门捕捉输入序列中的位置脉络。

模型训练:

Transformer模型的修炼之道依赖于反向传播算法和优化算法,如随机梯度下降。在修炼过程中,它细致地计算损失函数对权重的梯度,并运用优化算法微调这些权重,以追求损失函数的最小化。为了加速修炼进度和提高模型的通用能力,修炼者们还常常采纳正则化技术、集成学习等策略。

优点:

  1. 梯度消失与模型退化之困得以解决:Transformer模型凭借其独特的自注意力机制,能够游刃有余地捕捉序列中的长期依赖关系,从而摆脱了梯度消失和模型退化的桎梏。

  2. 并行计算能力卓越:Transformer模型的计算架构具备天然的并行性,使得在GPU上能够风驰电掣地进行训练和推断。

  3. 多任务表现出色:凭借强大的特征学习和表示能力,Transformer模型在机器翻译、文本分类、语音识别等多项任务中展现了卓越的性能。

缺点:

  1. 计算资源需求庞大:由于Transformer模型的计算可并行性,训练和推断过程需要庞大的计算资源支持。

  2. 对初始化权重敏感:Transformer模型对初始化权重的选择极为挑剔,不当的初始化可能导致训练过程不稳定或出现过拟合问题。

  3. 长期依赖关系处理受限:尽管Transformer模型已有效解决梯度消失和模型退化问题,但在处理超长序列时仍面临挑战。

应用场景:

Transformer模型在自然语言处理领域的应用可谓广泛,涵盖机器翻译、文本分类、文本生成等诸多方面。此外,Transformer模型还在图像识别、语音识别等领域大放异彩。

Python示例代码(简化版):

import torch``import torch.nn as nn``import torch.optim as optim``#该示例仅用于说明Transformer的基本结构和原理。实际的Transformer模型(如GPT或BERT)要复杂得多,并且需要更多的预处理步骤,如分词、填充、掩码等。``class Transformer(nn.Module):`    `def __init__(self, d_model, nhead, num_encoder_layers, num_decoder_layers, dim_feedforward=2048):`        `super(Transformer, self).__init__()`        `self.model_type = 'Transformer'``   `        `# encoder layers`        `self.src_mask = None`        `self.pos_encoder = PositionalEncoding(d_model, max_len=5000)`        `encoder_layers = nn.TransformerEncoderLayer(d_model, nhead, dim_feedforward)`        `self.transformer_encoder = nn.TransformerEncoder(encoder_layers, num_encoder_layers)``   `        `# decoder layers`        `decoder_layers = nn.TransformerDecoderLayer(d_model, nhead, dim_feedforward)`        `self.transformer_decoder = nn.TransformerDecoder(decoder_layers, num_decoder_layers)``   `        `# decoder`        `self.decoder = nn.Linear(d_model, d_model)``   `        `self.init_weights()``   `    `def init_weights(self):`        `initrange = 0.1`        `self.decoder.weight.data.uniform_(-initrange, initrange)``   `    `def forward(self, src, tgt, teacher_forcing_ratio=0.5):`        `batch_size = tgt.size(0)`        `tgt_len = tgt.size(1)`        `tgt_vocab_size = self.decoder.out_features``   `        `# forward pass through encoder`        `src = self.pos_encoder(src)`        `output = self.transformer_encoder(src)``   `        `# prepare decoder input with teacher forcing`        `target_input = tgt[:, :-1].contiguous()`        `target_input = target_input.view(batch_size * tgt_len, -1)`        `target_input = torch.autograd.Variable(target_input)``   `        `# forward pass through decoder`        `output2 = self.transformer_decoder(target_input, output)`        `output2 = output2.view(batch_size, tgt_len, -1)``   `        `# generate predictions`        `prediction = self.decoder(output2)`        `prediction = prediction.view(batch_size * tgt_len, tgt_vocab_size)``   `        `return prediction[:, -1], prediction``   ``   ``class PositionalEncoding(nn.Module):`    `def __init__(self, d_model, max_len=5000):`        `super(PositionalEncoding, self).__init__()``   `        `# Compute the positional encodings once in log space.`        `pe = torch.zeros(max_len, d_model)`        `position = torch.arange(0, max_len).unsqueeze(1).float()`        `div_term = torch.exp(torch.arange(0, d_model, 2).float() *`                             `-(torch.log(torch.tensor(10000.0)) / d_model))`        `pe[:, 0::2] = torch.sin(position * div_term)`        `pe[:, 1::2] = torch.cos(position * div_term)`        `pe = pe.unsqueeze(0)`        `self.register_buffer('pe', pe)``   `    `def forward(self, x):`        `x = x + self.pe[:, :x.size(1)]`        `return x``   ``   ``# 超参数``d_model = 512``nhead = 8``num_encoder_layers = 6``num_decoder_layers = 6``dim_feedforward = 2048``   ``# 实例化模型``model = Transformer(d_model, nhead, num_encoder_layers, num_decoder_layers, dim_feedforward)``   ``# 随机生成数据``src = torch.randn(10, 32, 512)``tgt = torch.randn(10, 32, 512)``   ``# 前向传播``prediction, predictions = model(src, tgt)``   ``print(prediction)

Flow(流模型)

算法原理:流模型,作为一种深度生成模型,其核心在于可逆变换的运用。它通过精心设计的可逆变换过程,将基础且简单的分布(例如均匀分布或正态分布)逐步转化为复杂的数据分布。

训练过程:在训练阶段,流模型致力于学习这些可逆变换的参数。这主要通过最小化潜在空间中的样本与真实数据之间的损失函数来实现,从而使模型能够更精确地捕捉数据的内在结构和特征。

优势:

  • 流模型具有高效的样本生成和密度估计能力,使得它在处理大规模数据集时表现卓越。

  • 由于其可逆性特性,流模型在反向传播和优化过程中更具优势,能够更好地调整参数以适应复杂的数据分布。

不足:

  • 设计合适的可逆变换对于流模型而言是一项具有挑战性的任务,需要深入研究和精心规划。

  • 在处理高维数据时,流模型可能会面临难以捕捉复杂依赖关系的困境,从而在一定程度上限制其应用范围。

适用领域:流模型在图像生成、音频生成以及密度估计等领域有着广泛的应用前景。它能够为这些任务提供高效且可靠的解决方案。

Python示例代码:

Python
import torch``import torch.nn as nn``   ``class FlowModel(nn.Module):`    `def __init__(self, input_dim, hidden_dim):`        `super(FlowModel, self).__init__()`        `self.transform1 = nn.Sequential(`            `nn.Linear(input_dim, hidden_dim),`            `nn.Tanh()`        `)`        `self.transform2 = nn.Sequential(`            `nn.Linear(hidden_dim, input_dim),`            `nn.Sigmoid()`        `)``   `    `def forward(self, x):`        `z = self.transform1(x)`        `x_hat = self.transform2(z)`        `return x_hat, z``   ``# 请注意,此示例代码仅提供了一个简化的流模型框架。在实际应用中,可能
需要设计更复杂的网络结构和训练过程以满足特定任务的需求。

Diffusion Model

Diffusion Model,这一深度生成模型,源自物理学中的扩散现象,呈现出令人瞩目的创新性。与传统的生成模型,如VAE、GAN相比,它通过模拟数据由随机噪声逐步扩散至目标数据的过程,实现数据生成。在图像、文本和音频生成等多个领域,Diffusion Model均展现出了卓越的性能。

其算法原理深入浅出,将数据生成过程视为一个马尔可夫链。数据从目标状态出发,每一步都逐渐向随机噪声过渡,直至达到纯粹的噪声状态。随后,通过逆向过程,数据从纯噪声逐渐恢复至目标状态。这一复杂过程通过一系列的条件概率分布得以精确描述。

训练过程则分为两大阶段:

  1. 前向过程(Forward Process):从真实数据起始,逐步加入噪声,直至达到纯粹的噪声状态。在此过程中,每一步的噪声水平都经过精心计算并保存下来。

  2. 反向过程(Reverse Process):从纯噪声出发,逐步去除噪声,直至恢复到目标数据。在这一阶段,神经网络(尤其是U-Net结构)发挥着关键作用,它负责预测每一步的噪声水平,并据此生成数据。

优化过程则是通过最小化真实数据与生成数据之间的差异,对模型进行训练。常用的损失函数包括MSE(均方误差)和BCE(二元交叉熵)。

Diffusion Model的显著优点在于:

  1. 高质量生成:其逐步扩散与恢复的过程确保了数据生成的高质量。

  2. 强解释性:生成过程具有清晰的物理意义,易于理解和解释。

  3. 高度灵活:能够处理图像、文本、音频等多种类型的数据。

然而,Diffusion Model也存在一些不足:

  1. 训练耗时:由于涉及多步的扩散和恢复过程,训练时间相对较长。

  2. 资源需求大:为了保证生成质量,需要较大的计算资源,包括内存和计算力。

在应用场景方面,Diffusion Model特别适用于需要生成高质量数据的领域,如图像、文本和音频生成等。其强大的解释性和灵活性也使得它在其他需要深度生成模型的领域具有广泛的应用前景。

以下是使用Python和PyTorch实现的Diffusion Model的示例代码:

Python
import torch``import torch.nn as nn``import torch.optim as optim``   ``# 定义U-Net模型``class UNet(nn.Module):`    `# ...省略模型定义...``   ``# 定义Diffusion Model``class DiffusionModel(nn.Module):`    `def __init__(self, unet):`        `super(DiffusionModel, self).__init__()`        `self.unet = unet``   `    `def forward(self, x_t, t):`        `# x_t为当前时刻的数据,t为噪声水平`        `# 利用U-Net预测噪声水平`        `noise_pred = self.unet(x_t, t)`        `# 根据预测的噪声水平生成数据`        `x_t_minus_1 = x_t - noise_pred * torch.sqrt(1 - torch.exp(-2 * t))`        `return x_t_minus_1``   ``# 初始化模型和优化器``unet = UNet()``model = DiffusionModel(unet)``# 训练过程``for epoch in range(num_epochs):`    `for x_real in dataloader:  # 从数据加载器中获取真实数据`        `# 前向过程`        `x_t = x_real  # 从真实数据开始`        `for t in torch.linspace(0, 1, num_steps):`            `# 添加噪声`            `noise = torch.randn_like(x_t) * torch.sqrt(1 - torch.exp(-2 * t))`            `x_t = x_t + noise * torch.sqrt(torch.exp(-2 * t))``   `            `# 计算预测噪声`            `noise_pred = model(x_t, t)``   `            `# 计算损失`            `loss = nn.MSELoss()(noise_pred, noise)``   `            `# 反向传播和优化`            `optimizer.zero_grad()`            `loss.backward()`            `optimizer.step()
  

总结:通过对GAN、VAE、Flow、Diffusion和AR这五种常见生成模型的分析比较,VAE和GAN是深度生成模型的基础模型,前者倚重贝叶斯概率理论,后者则基于对抗训练策略。而针对具有时序依赖性的数据,如序列数据,RNN模型则能展现其独特的优势。此外,Flow模型和Diffusion模型在生成样本的稳定性和多样性方面表现出色,但相应的,其计算成本也相对较高。这些模型各有千秋,根据具体的应用场景和需求选择合适的模型至关重要。

如何学习AI大模型 ?

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

😝有需要的小伙伴,可以VX扫描下方二维码免费领取🆓

👉1.大模型入门学习思维导图👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
在这里插入图片描述

👉2.AGI大模型配套视频👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。

在这里插入图片描述
在这里插入图片描述

👉3.大模型实际应用报告合集👈

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)

在这里插入图片描述

👉4.大模型落地应用案例PPT👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(全套教程文末领取哈)

在这里插入图片描述

👉5.大模型经典学习电子书👈

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)
img

在这里插入图片描述

👉6.大模型面试题&答案👈

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)

在这里插入图片描述
👉学会后的收获:👈
基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习

这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

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

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

相关文章

【IDEA】使用IDEA连接MySQL数据库并自动生成MySQL的建表SQL语句

前言: 在软件开发过程中,数据库的设计与实现是至关重要的一环。IntelliJ IDEA作为一款强大的集成开发环境(IDE),提供了丰富的数据库工具,使得连接MySQL数据库并自动生成建表SQL语句变得简单快捷。本文将详细…

ansible远程自动化运维、常用模块详解

一、ansible是基于python开发的配置管理和应用部署工具;也是自动化运维的重要工具;可以批量配置、部署、管理上千台主机;只需要在一台主机配置ansible就可以完成其它主机的操作。 1.操作模式: 模块化操作,命令行执行…

竹云赋能“中国·贵州”全省统一移动应用平台建设,打造政务服务“新引擎”

近日,2024中国国际大数据产业博览会在贵州贵阳圆满落幕。会上,由贵州省政府办公厅牵头建设的“中国贵州”全省统一移动应用平台正式发布,聚焦民生办事、政务公开、政民互动、扁平高效、数据赋能五大模块,旨在打造公平普惠的服务平…

解决Python Debug没有反应的问题

应该有伙伴和我一样,用的2024版本的VS code,但是用到的python解释器是3.6.x,或者是更旧版本的Python. 想要进行Debug就会在扩展里面安装 一般安装就会安装最新版本,但是debug时又没有反应,其主要原因是Python的版本与…

基于Springboot的助学金管理系统设计与实现

文未可获取一份本项目的java源码和数据库参考。 一、研究背景 利用计算机来实现助学金管理系统,已经成为一种趋势,相比传统的手工管理方式,利用软件进行助学金管理系统,有着执行快,可行性高、容量存储大,…

前端入门:HTML+CSS

引言: 前端三大件:HTML、CSS、JS,每一个部分都很重要,我听过比较形象的比喻就是HTML(HYPER TEXT MARKUP LANGUAGE)相当于骨架,而CSS就是装饰渲染,JS则是动作功能实现。 之前的文章我已经讲过HTML,这篇文章我将讲解HTML和CSS的案例。 网页开发: 我开发出来的网页如…

DAMODEL——Llama3.1的部署与使用指南

Llama3.1的部署与使用指南 在自然语言处理(NLP)领域,大模型(LLM)是基于深度学习算法训练而成的重要工具,应用范围包括自然语言理解和生成。随着技术的发展,开源的LLM不断涌现,涵盖了…

数字人直播带货火了,只要有了这个工具,就可以打造数字人,建议新手小白赶紧尝试!

经济下行,普通人应该尽早认清一个事实,没有一技之长,没有核心竞争力,即便是打工皇帝,年入百万也只是浮云。 一定要保证主业的稳定,再探索新的机会,要多从”1-10",而不是反复”…

初中数学证明集锦之三角形内角和

导言 非常喜欢数学那套,由简单到复杂,逐层递进的证明之美。 既证了,而且明了 😃 让人不得不信服! 由人教版教材看到的三角形内角和180度的证明法,觉得现在课本不单传播了知识,而且点睛数学之…

简单多状态dp第二弹 leetcode -删除并获得点数 -粉刷房子

740. 删除并获得点数 删除并获得点数 分析: 使用动态规划解决 这道题依旧是 打家劫舍I 问题的变型。 我们注意到题目描述,选择 x 数字的时候, x - 1 与 x 1 是不能被选择的。像不像 打家劫舍 问题中,选择 i 位置的金额之后,就不…

【网络】高级IO——LT和ET

在上一篇的学习中,我们已经简单的使用了epoll的三个接口,但是仅仅了解那些东西是完全不够的!!接下来我们将更深入的学习epoll 1.epoll的两种工作模式——LT和ET 下面来举一个例子帮助大家理解ET和LT模式的区别(送快递…

【HTTP】请求“报头”,Referer 和 Cookie

Referer 描述了当前这个页面是从哪里来的(从哪个页面跳转过来的) 浏览器中,直接输入 URL/点击收藏夹打开的网页,此时是没有 referer。当你在 sogou 页面进行搜索时,新进入的网页就会有 referer 有一个非常典型的用…

深度学习-图像处理篇1.3pytorch神经网络例子

batch:一批图像数量 官方例子 #model import torch.nn as nn import torch.nn.functional as Fclass LeNet(nn.Module):def __init__(self):super(LeNet, self).__init__()self.conv1 nn.Conv2d(3,16,5)self.pool1 nn.MaxPool2d(2, 2)self.conv2 nn.Conv2d(16, 32, 5)self.…

Python 找到给定点集的简单闭合路径(Find Simple Closed Path for a given set of points)

给定一组点,将这些点连接起来而不相交 例子: 输入:points[] {(0, 3), (1, 1), (2, 2), (4, 4), (0, 0), (1, 2), (3, 1}, {3, 3}}; 输出:按以下顺序连接点将 不造成任何交叉 {(0, 0), (3, …

将sqlite3移植到开发板上

1、下载c源码 sqlite官网下载C源码:SQLite Download Page 点击第二个链接下载 2、解压 1、将下载好的c源码,放在linux下, 2、解压压缩包:tar -zxvf sqlite-autoconf-3460100 新建一个用存放 编译出来的文件: mkd…

Web开发:使用C#创建、安装、调试和卸载服务以及要注意的写法

目录 一、创建服务 1.创建项目(.NET Framework) 2.重命名 3.编写逻辑代码 二、安装服务 1.方案一:利用VS2022安装文件的配置 选择添加安装程序 安装文件的介绍及配置 ​编辑​ 重新编译 工具安装 2.方案二:编写bat脚本安…

Excel match 函数使用方法,和 index 函数是绝配

大家好,这里是效率办公指南! 🔎 在处理Excel数据时,我们经常需要找出特定数据在列表或数组中的位置。MATCH函数正是为此设计的,它可以返回一个值在指定数组中的相对位置。今天,我们将详细介绍MATCH函数的使…

MySQL基础(13)- MySQL数据类型

目录 一、数据类型概述 1.MySQL中的数据类型 二、整型 1.数据类型可选属性 2.使用建议 三、浮点数、定点数、位类型 1.类型介绍 2.浮点类型 3.定点数类型 4.位类型 四、日期时间类型 1.YEAR 2.DATE 3.TIME 4.DATETIME 5.TIMESTAMP 6.TIMESTAMP和DATETIME的区别…

Android Studio开发发布教程

本文讲解Android Studio如何发布APP。 在Android Studiobuild菜单栏下点击Generate Singed Bundle/APK…打开对话框。 选择APK点击Next 点击Create New...进行创建

Flask找上下文源码

1. app Flask(__name__) app.__call__ 1.1 按住 command 键 点击 进到这个函数里 1.2 接着找 return 看看返回什么 点进去 1.3 找到定义函数 1.4 点进去先看这个里边有啥 1.5 找到定义类 1.6 找到RequestContext 类 1.7 找到 RequestContext ---> 的push 方法 1.8 点击 _c…