pytorch学习笔记7--循环神经网络、GAN

C-RNN-GAN:具有对抗训练的连续循环神经网络2016--生成音乐 生成对抗网络已被提出作为一种有效训练深度生成神经网络的方法。我们提出了一种生成对抗模型,它。我们得出的结论是,随着模型的训练,它生成的音乐听起来越来越好,报告生成的音乐的统计数据,并让读者通过下载生成的歌曲来判断质量。 阅读详情

循环神经网络

序列的表示方法

  1. pytorch 中 string的表示方法:word embedding [seq_len,feature_len]、[words,word_vec]、one-hot…
    eg:[5,1],[5,100]

  2. batch

    1. [word num, b, word_vec]
    2. [b,word num, word vec]
  3. word2vec v.s. Glove

word_to_ix = {"hello":0,"world":1}
lookup_tensor = torch.tensor([word_to_ix["hello"]],dtype=torch.long)

embeds = nn.Embedding(2,5)
hello_embed = embeds(lookup_tensor)
print(hello_embed)
:tensor([[0.6614,0.2669,0.0617,0.6213,-0.4519]],grad_fn=<EmbeddingBackward>)
from torchnlp word_to_vector import Glove
vectors = GloVe()

vectors['hello']
:-1.7494
:0.6242
:...
:-0.6202
:2.0928
:[torch.FloatTensor of size 100]

RNN Layer的使用

在这里插入图片描述

nn.RNN
rnn = nn.RNN(input_size=100,hidden_size=20,num_layers=4)
print(rnn)
x = torch.randn(10,3,100)
out,h = rnn(x)
print(out.shape,h.shape)
:torch.Size([10,3,20])  torch.Size([4,3,20])

nn.RNNCell
cell1 = nn.RNNCell(100,20)
h1 = torch.zeros(3,20)
for xt in x:
    h1 = cell1(xt,h1)
print(h1.shape)
:torch.Size([3,20])
cell1 = nn.RNNCell(100,30)
cell2 = nn.RNNCell(30,20)

h1 = torch.zeros(3,30)
h2 = torch.zeros(3,20)

for xt in x:
    h1 = cell1(xt,h1)
    h2 = cell2(h1,h2)

print(h2.shape)
:torch.Size([3,20])
预测sin(x)曲线

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

start = np.random.radint(3,size=1)[0]
time_steps = np.linspace(start,start+10,num_time_steps)
data = np.sin(time_steps)
data = data.reshape(num_time_steps,1)
x = torch.tensor(data[:-1]).float().view(1,num_time_steps -1,1)
y = torch.tensor(data[1:]).float().view(1,num_time_steps -1,1)
class Net(nn.Module):
    def __init__(self,):
        super(Net,self).__init__()
        self.rnn = nn.RNN(
            input_size = input_size,
            hidden_size = hidden_size,
            num_layers = 1,
            batch_first = True,
        )
        self.linear = nn.Linear(hidden_size,output_size)
        
    def forward(self,x,hidden_prew):
        out,hidden_prev = self.rnn(x,hidden_prev)
        
        out = out.view(-1,hidden_size)
        out = self.linear(out)
        out = out.unsqueeze(dim=0)
        return out, hidden_prev
train

model = Net()
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(),lr)

hidden_prev = torch.zeros(1,1,hidden_size)
for iter in range(6000):
    start = np.random.randint(10,size=1)[0]
    time_steps = np.linspace(start,start+10,num_time_steps)
    data = np.sin(time_steps)
    data = data.reshape(num_time_steps,1)
    x = torch.tensor(data[:-1]).float().view(1,num_time_steps-1,1)
    y=torch.tensor(data[1:]).float().view(1,num_time_steps-1,1)
    output,hidden_prev = model(x,hidden_prev)
    hidden_prev = hidden_prev.detach()
    
    loss = criterion(output,y)
    model.zero_grad()
    loss.backward()
    optimizer.step()
    
    if iter %100 == 0:
        print("Iteration :{ }  loss { }".format(iter,loss.item()))

predict
predictions = []
input = x[:,0,:]
for _ in range(x.shape[1])
    input = input.view(1,1,1)
    (pred,hidden_prev) = model(input,hidden_prev)
    input = pred
    predictions.append(pred.detach().numpy().ravel()[0])

梯度弥散和梯度爆炸

[外链图片转存失败(img-VZPLpP9r-1563934297557)(evernotecid://81F77541-86B7-45D2-9235-B4CFA95FC507/wwwevernotecom/147511744/ENResource/p1135)]

gradient clipping
loss = criterion(output,y)
model.zero_grad()
loss.backward()
for p in model.parameters():
    print(p.grad.norm())
    torch.nn.utils.clip_grad_norm(p,10)# 把梯度clipping到0~10 的范围
optimizer.step()
gradient vanishing

梯度长时间得不到更新
LSTM解决梯度弥散
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

LSTM 的使用

lstm = nn.LSTM(input_size=100, hidden_size=20,num_layers=4)
print(lstm)
x = torch.randn(10,3,100)
out,(h,c) = lstm(x)
print(out.shape,h.shape,c.shape)

: torch.Size([10,3,20]) torch.Size([4,3,20]) torch.Size([4,3,20])

LSTMCell 的使用

print('one layer lstm')
cell = nn.LSTMCell(input_size=100,hidden_size=20)
h = torch.zeros(3,20)
c = torch.zeros(3,20)
for xt in x :
    h,c = cell(xt,[h,c])

print(h.shape,c.shape)

: torch.Size([3,20]) torch.Size([3,20])
情感分类实战

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

class RNN(nn.Module):
	def __init__(self,vocab_size,embedding_dim,hidden_dim):
		super(RNN,self).__init__()
		# [0-10001] =>[100]
		self.embedding = nn.Embedding(vocab_size,embedding_dim)
		#[100] => [256]
		self.rnn = nn.LSTM(embedding_dim,hidden_dim,num_layers=2,bidirectional=True,dropout=0.5)
		#[256*2] = > [1]
		self.fc = nn.Linear(hidden_dim*2,1)
		self.dropout = nn.Dropout(0.5)
	def forward(self,x):
		# [seq,b,1] => [seq,b,100]
		embedding = self.dropout(self.embedding(x))
		#output:[seq,b,hid_dim*2]
		#hidden/h: [num_layers*2,b,hid_dim]
		# cell/c: [num_layers*2,b,hid_dim]
		output,(hidden,cell) = self.rnn(embedding)
		# [num_layers*2,b,hid_dim] => 2 of [b,hid_dim] => []b,hid_dim*2]
		hidden = torch.cat([hidden[-2],hidden[-1]],dim=1)
		# [b,did_dim*2] => [b,1]
		hidden = self.dropout(hidden)
		out = self.fc(hidden)
		return out

在这里插入图片描述

def train(rnn,iterator,optimizer,criteon):
	avg_acc = []
	rnn.train()
	for i , batch in enumerate(iterator):
		# [seq,b] => [b,1] => [b]
		pred = rnn(batch.text).squeeze(1)
		loss = criteon(pred,batch.label)
		acc = binary_acc(pred,batch.label).item()
		avg_acc.append(acc)
		optimizer.zero_grad()
		loss.backward()
		optimizer.step()

def binary_acc(preds,y):
	preds = torch.round(torch.sigmoid(preds))
	correct = torch.eq(preds,y).float()
	acc = correct.sum()/len(correct)
	return acc

def eval(rnn,iterator,criteon):
	avg_acc = []
	rnn.eval()
	with torch.no_grad():
		for batch in iterator:
			# [b,1] =>[b]
			pred = rnn(batch.text).squeeze(1)
			loss = criteon(pred,batch.label)
			acc = binary_acc(pred,batch.label).item()
			avg_acc.append(acc)
	avg_acc = np.array(avg_acc).mean()
	print('>>test:',avg_acc)		

GAN

损失

m i n G m a x D L ( D , G ) = E x   p r ( x ) [ l o g D ( x ) ] + E x   p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] = E x   p r ( x ) [ l o g D ( x ) ] + E x   p g ( x ) [ l o g ( 1 − D ( x ) ) ] min_G max_D L(D,G) =E_{x~p_r(x)}[logD(x)] + E_{x~p_z(z)}[log(1-D(G(z)))] = E_{x~p_r(x)}[logD(x)] + E_{x~p_g(x)}[log(1-D(x))] minG​maxD​L(D,G)=Ex pr​(x)​[logD(x)]+Ex pz​(z)​[log(1−D(G(z)))]=Ex pr​(x)​[logD(x)]+Ex pg​(x)​[log(1−D(x))]
在这里插入图片描述

纳什均衡

  1. where will D converge, given fixed G
    1. for G fixed ,the optimal discriminator D is D G ∗ ( x ) = P d a t a ( x ) P d a t a ( x ) + p g ( x ) D_G^*(x) = \frac{P_{data}(x)}{P_{data}(x) + p_g(x)} DG∗​(x)=Pdata​(x)+pg​(x)Pdata​(x)​
    2. proof. the training criterion for the discriminator D, given any generator G, is to maximize the quantity V(G,D)
    3. V ( G , D ) = ∫ x P d a t a ( x ) l o g ( D ( x ) ) d x + ∫ z P z ( z ) l o g ( 1 − D ( g ( z ) ) ) d z = ∫ x P d a t a ( x ) l o g ( D ( x ) ) + P g ( x ) l o g ( 1 − D ( x ) ) d x V(G,D) = \int_x{P_{data}(x)log(D(x))dx} + \int_z{P_z(z)log(1-D(g(z)))dz} = \int_x{P_{data}(x)log(D(x))+P_g(x)log(1-D(x))dx} V(G,D)=∫x​Pdata​(x)log(D(x))dx+∫z​Pz​(z)log(1−D(g(z)))dz=∫x​Pdata​(x)log(D(x))+Pg​(x)log(1−D(x))dx
    4. 因为G 是固定的,所以令 P d a t a ( x ) = A , P g ( x ) = B P_{data}(x) = A,P_g(x) = B Pdata​(x)=A,Pg​(x)=B
    5. f ( x ~ ) = A l o g x ~ + b l o g ( 1 − x ~ ) f(\tilde{x}) = Alog \tilde{x}+blog(1- \tilde{x}) f(x~)=Alogx~+blog(1−x~)
    6. 令 d f ( x ~ ) d x ~ = A 1 l n 10 1 x ~ − B 1 l n 10 1 1 − x ~ = 1 l n 10 ( A x ~ − B 1 − x ~ ) = 1 l n 10 A − ( A + B ) x ~ x ~ ( 1 − x ~ ) = 0 \frac{df(\tilde{x})}{d \tilde{x}} = A \frac{1}{ln10}\frac{1}{\tilde{x}} - B \frac{1}{ln10}\frac{1}{1-\tilde{x}}=\frac{1}{ln10}(\frac{A}{\tilde{x}}-\frac{B}{1-\tilde{x}})=\frac{1}{ln10}\frac{A-(A+B)\tilde{x}}{\tilde{x}(1-\tilde{x})}=0 dx~df(x~)​=Aln101​x~1​−Bln101​1−x~1​=ln101​(x~A​−1−x~B​)=ln101​x~(1−x~)A−(A+B)x~​=0
    7. 所以: D ∗ ( x ) = x ~ ∗ = A A + B = p r ( x ) p r ( x ) + p g ( x ) ∈ [ 0 , 1 ] D^*(x) = \tilde{x}^* = \frac{A}{A+B} = \frac{p_r(x)}{p_r(x)+p_g(x)} \in [0,1] D∗(x)=x~∗=A+BA​=pr​(x)+pg​(x)pr​(x)​∈[0,1]
  2. KL Divergence vs. JS Divergence
    1. D K L ( p ∣ ∣ q ) = ∫ x p ( x ) l o g p ( x ) q ( x ) d x D_{KL}(p||q) = \int_x p(x)log{\frac{p(x)}{q(x)}}dx DKL​(p∣∣q)=∫x​p(x)logq(x)p(x)​dx
    2. D J S ( p ∣ ∣ q ) = 1 2 D K L ( p ∣ ∣ p + q 2 ) + 1 2 D K L ( q ∣ ∣ f r a c p + q 2 ) D_{JS}(p||q) = \frac{1}{2}D_{KL}(p||\frac{p+q}{2})+\frac{1}{2}D_{KL}(q||frac{p+q}{2}) DJS​(p∣∣q)=21​DKL​(p∣∣2p+q​)+21​DKL​(q∣∣fracp+q2) 主要解决kl不对称的问题
  3. where will G converge,after optimal D

D J S ( P r ∣ ∣ P g ) = 1 2 D K L ( P r ∣ ∣ P r + P g 2 ) + 1 2 D K L ( P g ∣ ∣ P r + P g 2 ) D_{JS}(P_r||P_g) = \frac{1}{2}D_{KL}(P_r||\frac{P_r+P_g}{2})+\frac{1}{2}D_{KL}(P_g||\frac{P_r+P_g}{2}) DJS​(Pr​∣∣Pg​)=21​DKL​(Pr​∣∣2Pr​+Pg​​)+21​DKL​(Pg​∣∣2Pr​+Pg​​)

= 1 2 ( l o g 2 + ∫ x P r ( x ) l o g P r ( x ) P r + P g ( x ) ) + 1 2 ( l o g 2 + ∫ x P g ( x ) l o g ( P g ( x ) P r + P g ( x ) ) d x =\frac{1}{2}(log2+ \int_x P_r(x)log\frac{P_r(x)}{P_r+P_g(x)})+\frac{1}{2}(log2 + \int_x P_g(x)log(\frac{P_g(x)}{P_r+P_g(x)})dx =21​(log2+∫x​Pr​(x)logPr​+Pg​(x)Pr​(x)​)+21​(log2+∫x​Pg​(x)log(Pr​+Pg​(x)Pg​(x)​)dx

= 1 2 ( l o g 4 + L ( G , D ∗ ) ) =\frac{1}{2}(log4 + L(G,D^* )) =21​(log4+L(G,D∗))
所以
L ( G , D ∗ ) = 2 D J S ( P r ∣ ∣ P g ) − 2 l o g 2 L(G,D^* ) = 2D_{JS}(P_r||P_g)-2log2 L(G,D∗)=2DJS​(Pr​∣∣Pg​)−2log2
D J S ( P r ∣ ∣ P g ) ≥ 0 D_{JS}(P_r||P_g)\ge 0 DJS​(Pr​∣∣Pg​)≥0
P r = P g P_r=P_g Pr​=Pg​

transposed convolution

在这里插入图片描述

WGAN 使用wassertein Distance 代替了Discriminator
GAN 实战
import numpy as np
import visdom
import random
from torch import nn, optim,autograd
import torch
from  matplotlib import pyplot as plt
h_dim = 400
batchsz = 512
viz = visdom.Visdom()

class Generator(nn.Module):
    def __init__(self):
        super(Generator,self).__init__()

        self.net = nn.Sequential(
            nn.Linear(2,h_dim),
            nn.ReLU(True),
            nn.Linear(h_dim,h_dim),
            nn.ReLU(True),
            nn.Linear(h_dim,h_dim),
            nn.ReLU(True),
            nn.Linear(h_dim,2)
        )
    def forward(self, x):
        output = self.net(x)
        return output

class Discriminator(nn.Module):

    def __init__(self):
        super(Discriminator,self).__init__()

        self.net = nn.Sequential(
            nn.Linear(2,h_dim),
            nn.ReLU(True),
            nn.Linear(h_dim,h_dim),
            nn.ReLU(True),
            nn.Linear(h_dim,h_dim),
            nn.ReLU(True),
            nn.Linear(h_dim,1),
            nn.Sigmoid()

        )

    def forward(self, x):
        output = self.net(x)
        return output


def data_generator():
    scale = 2.
    centers = [(1,0),(-1,0),(0,1),(0,-1),(1./np.sqrt(2),1./np.sqrt(2)),
               (1./np.sqrt(2),-1./np.sqrt(2)),(-1./np.sqrt(2),1./np.sqrt(2))
               ,(-1./np.sqrt(2),-1./np.sqrt(2))]

    while True:
        dataset = []
        for i in range(batchsz):
            point = np.random.randn(2)*0.02
            center = random.choice(centers)

            point[0] += center[0]
            point[1] += center[1]
            dataset.append(point)

        dataset = np.array(dataset).astype(np.float32)
        dataset /= 1.414
        yield  dataset


def main():

    torch.manual_seed(23)
    np.random.seed(23)

    data_iter = data_generator()
    x = next(data_iter)

    G = Generator().cuda()
    D = Discriminator().cuda()
    optim_G = optim.Adam(G.parameters(),lr=5e-4,betas=(0.5,0.9))
    optim_D = optim.Adam(D.parameters(),lr=5e-4,betas=(0.5,0.9))

    for epoch in range(50000):
        for _ in range(5):
            # train on real data
            x = next(data_iter)
            x = torch.from_numpy(x).cuda()
            predr = D(x)
            # max predr,min lossr
            lossr = predr.mean()

            z = torch.randn(batchsz,2).cuda()
            xf = G(z).detach()
            predf = D(xf)
            lossf = predf.mean()

            # aggregate all
            loss_D = lossr + lossf

            # optimize
            optim_D.zero_grad()
            loss_D.backward()
            optim_D.step()

        # 2 train Generator
        z = torch.randn(batchsz,2).cuda()
        xf = G(z)
        predf = D(xf)
        loss_G = predf.mean()

        # optimize
        optim_G.zero_grad()
        loss_G.backward()
        optim_G.step()




五大神经网络模型核心原理与PyTorch实战:CNN、RNN、GNN、Transformer、GAN 神经网络作为深度学习的核心,其本质是通过多层非线性变换自动进行特征提取与模式识别,从而实现对复杂数据映射关系的拟合。这一原理使得模型能够从原始数据中学习到有效的特征表示,替代了传统机器学习中繁琐的手工特征工程。在工程实践中,针对不同数据结构,发展出了各具特色的神经网络架构。例如,卷积神经网络(CNN)利用局部连接和参数共享高效处理图像等网格数据;循环神经网络(RNN)及其变体LSTM通过循环结构捕捉序列数据中的时序依赖。这些模型在计算机视觉、自然语言处理等领域展现出巨大技术价值。随着图神经网络(GNN)处理 阅读详情

相关推荐

五大AI模型核心原理与实战指南:CNN、RNN、Transformer、GAN、GNN

1. 先搞清楚这五大模型到底解决什么问题 如果你刚开始接触AI,看到GNN、CNN、RNN、GAN、Transformer这些名字,第一反应可能是“好多字母,好复杂”。其实,这些模型之所以被反复讨论,不是因为它们名字酷,而是因为它们各自解决了一类非常具体、且传统方法很难搞定的问题。把它们当成工具箱里不同形状的扳手,先知道每个扳手是拧什么螺丝的,比死记硬背它的锻造工艺要重要得多。 简单来说,你可以这样理解它们的核心任务: CNN(卷积神经网络) : 看图的专家 。它的强项是从图像、视频这类网格状数据(像素点)

anqiu4023的博客 373

3、CNN、RNN、GAN网络

深度学习

weixin_44986037的博客 2053

PyTorch实战:从零构建八大核心神经网络模型(CNN/RNN/GAN/Transformer等)

神经网络作为深度学习的核心架构,通过模拟人脑神经元连接进行信息处理,其基本单元包括神经元、权重、偏置和激活函数。其工作原理是通过前向传播计算输出,再通过反向传播和梯度下降算法优化参数,以最小化预测误差。这项技术的核心价值在于能够自动从数据中学习复杂的特征表示,解决传统算法难以处理的模式识别问题。在工程实践中,神经网络已广泛应用于计算机视觉、自然语言处理、语音识别和推荐系统等场景。本文聚焦于使用PyTorch框架,通过可运行的代码实例,系统性地讲解并实现包括卷积神经网络(CNN)、循环神经网络(RNN)、生成

weixin_30321709的博客 336

从神经元到CNN、RNN、GAN…神经网

神经网络详细分类

boatingMan的博客 1163

GAN造图MINST手写数字

文章目录1.生成对抗网络介绍2.代码讲解2.1 导入库文件、设定维度和批次2.2 载入数据集2.3 定义鉴别网络2.4 生成网络2.5 定义网络实例、优化器和损失函数2.6 网络训练过程2.7 保存模型2.8 训练结果图 1.生成对抗网络介绍 生成对抗网络GAN(Generate Adversarial Network)包含两个部分,生成网络和对抗网络。 生成网络(generator):给定一个简单的高维的正态分布的噪声向量,通过生成网络的WX+b和卷积池化等操作将其变为一个与输入的真实图片大小相同的矩阵

qq_29380039的博客 597

Pytorch Note45 生成对抗网络(GAN)

Pytorch Note45 生成对抗网络(GAN) 文章目录Pytorch Note45 生成对抗网络(GAN)GANsDiscriminator NetworkGenerator Network简单版本的生成对抗网络判别网络生成网络 全部笔记的汇总贴:Pytorch Note 快乐星球 2014年,深度学习三巨头之一 lan Goodfellow 提出了生成对抗网络( GenerativeAdversarial Networks, GANs)这一概念,刚开始并没有引起轰动,直到2016年,学界、业界对它

风信子的猫Redamancy的快乐星球 2661

一文看懂25个神经网络模型

1. 引言在深度学习十分火热的今天,不时会涌现出各种新型的人工神经网络,想要实时了解这些新型神经网络的架构还真是不容易。光是知道各式各样的神经网络模型缩写(如:DCIGN、BiLSTM、DCGAN……还有哪些?),就已经让人招架不住了。因此,这里整理出一份清单来梳理所有这些架构。其中大部分是人工神经网络,也有一些完全不同的怪物。尽管所有这些架构都各不相同、功能独特,当我在画它们的节点图时……其中潜在

刘炫320的博客 25万+

Pytorch Note 快乐星球

Pytorch Note 这是我的Pytoch学习笔记,下面会慢慢的更新我的学习笔记 Note1 Pytorch介绍 Note2 Pytorch环境配置

风信子的猫Redamancy的快乐星球 1万+

[Pytorch系列-56]:循环神经网络 - word2vec词向量表Embedding/Glove的定义与读访问

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_优快云博客 本文网址: 目录 第1章Embedding词嵌入概述 第2章 torch.nn.Embedding 的使用说明 第3章torch.nn.Embedding代码实例 3.1 前提条件 3.2 定义单词到索引的映射表(字典) 3.3 自定义一个采用默认初始化的词向量表 3.4 从词向量实例化后的表中读取词n个向量 第4章 Glove()预定义的词向量数据集代码实例 4.1 概述 4.2 定义G..

文火冰糖(王文兵)的博客 1583

【人工智能-初级】第12章 循环神经网络(RNN)初探:如何处理时间序列数据

循环神经网络是一种能够处理序列数据的神经网络模型。与普通的前馈神经网络不同,RNN 中的神经元之间存在循环连接,使得网络可以将前一步的输出信息“记忆”下来并传递给下一步。这使得 RNN 特别适合处理具有时间相关性的任务,比如预测股票价格、语音识别、机器翻译等。RNN 的一个核心特征是它具有隐藏状态(hidden state),这个隐藏状态能够存储前面时间步的信息。每一步的隐藏状态不仅由当前的输入决定,还受到上一个时间步的隐藏状态影响,因此 RNN 能够捕捉序列中的时间依赖性。htfWhhh。

若北辰 1085

【人工智能-初级】第16章 用生成对抗网络(GAN)生成图像:初级实现

接下来,我们定义 GAN 的生成器和判别器。我们使用二元交叉熵损失函数(Binary Cross-Entropy Loss)和 Adam 优化器来训练网络。criterion = nn.BCELoss() # 二元交叉熵损失函数lr = 0.0002 # 学习率nn.BCELoss:用于二分类任务的损失函数。optim.Adam:定义 Adam 优化器,用于更新生成器和判别器的参数。生成对抗网络(GAN)是一种强大的生成模型,通过生成器和判别器之间的博弈,能够生成高度逼真的样本。

若北辰 961

PyTorch 深度学习实战(7):循环神经网络(RNN)与文本分类(基于本地头条数据集)

循环神经网络(RNN)是一种专门用于处理序列数据的神经网络结构。与传统的全连接神经网络不同,RNN 通过引入“记忆”机制,能够捕捉序列数据中的时间依赖关系,因此在 NLP、时间序列分析等领域有着广泛的应用。本文介绍了循环神经网络(RNN)的基本概念,并使用 PyTorch 实现了一个简单的中文文本分类模型。通过这个例子,我们学习了如何处理中文文本数据、构建 RNN 模型以及进行训练和评估。在下一篇文章中,我们将探讨 Transformer 模型及其在机器翻译中的应用。敬请期待!代码实例说明。

m0_60414444的博客 1446

深度学习三大网络实战:CNN、RNN与GAN从原理到代码

深度学习入门绕不开三个核心网络架构:卷积神经网络CNN、循环神经网络RNN与生成对抗网络GAN。CNN通过卷积核的滑动扫描自动提取图像特征,解决视觉识别问题;RNN借助隐藏状态形成对序列数据的记忆,擅长文本生成与时序预测;GAN则让生成器与判别器相互博弈,最终学会拟合真实数据分布。三者共同构成深度学习在图像理解、序列建模和内容生成方向的基础范式。理解它们各自的原理与适用场景,是构建复杂模型和选型的关键。本文结合具体项目源码,从环境搭建、网络结构拆解到训练调试技巧,梳理从理论认知到工程落地的高效路径,帮助学习

weixin_34254848的博客 212

轻松学Pytorch – 构建生成对抗网络

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达又好久没有继续写了,这个是我写的第21篇文章,我还在继续坚持写下去,虽然经常各种拖延症,但是我还记得,一直没有敢忘记!今天给大家分享一下Pytorch生成对抗网络代码实现。01.什么是生成对抗网络Ian J. Goodfellow在2014年提出生成对抗网络,从此打开了深度学习中另外一个重要分支,让生成...

小白学视觉 1365

Python抓取摄像头图像,进行AI识别(一)

本文介绍了如何用Python获取海康威视摄像头的图像并进行AI识别。主要内容包括:1)准备工作,包括摄像头IP设置和密码重置方法;2)使用Python的Requests库通过ISAPI接口获取实时图像;3)示例代码展示如何保存摄像头图像。整个过程为后续AI图像识别提供了基础,通过简单的Python代码即可实现专业监控设备的图像采集功能。

Hahafantuan的博客 1514

Cadence IC618/Spectre231安装避坑指南:详解环境变量配置与License管理那些事儿

本文深入解析Cadence IC618/Spectre231安装过程中的环境变量配置与License管理难题,提供从变量冲突解决到高效License管理的实用方案。针对常见的64位标识冲突、路径污染及License服务器连接问题,给出具体诊断步骤和优化建议,帮助用户构建稳定可靠的EDA环境。

weixin_33737134的博客 616

Pytorch学习笔记(二)自用

涉及资源 1.官网DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ 2.莫烦python 个人网站 、 b站视频、参考代码 3.函数搜索:https://pytorch.org/docs/stable/index.html 本周学习内容: CNN实现分类,识别MNIST数据集 以CNN为例,实现GPU加速 RNN实现分类,识别MNIST数据集 RNN实现回归,用sin去拟合cos 自编码 环境配置: python=3.7; torch=1.6.0; tor

qq_39542170的博客 359

如何在R语言中使用Logistic回归模型

在日常学习或工作中经常会使用线性回归模型对某一事物进行预测,例如预测房价、身高、GDP、学生成绩等,发现这些被预测的变量都属于连续型变量。然而有些情况下,被预测变量可能是二元变量,即成功或失败、流失或不流失、涨或跌等,对于这类问题,线性回归将束手无策。这个时候就需要另一种回归方法进行预测,即Logistic回归。 在实际应用中,Logistic模型主要有三大用途: 1)寻找危险因素,找到某些影响...

weixin_34056162的博客 9552

7天精通PyTorch:The Incredible PyTorch高效学习日程表

The Incredible PyTorch是一个精心策划的PyTorch学习资源集合,包含教程、论文、项目和社区资源等内容。本日程表将帮助你在一周内系统掌握PyTorch核心技能,从基础概念到实际应用,让你的深度学习之旅更加高效。 [![The Incredible PyTorch项目logo](https://raw.gitcode.com/gh_mirrors/th/the-incredi

gitblog_00594的博客 918

氮化镓GaN电机驱动实战:从器件原理到EPC驱动中心

电机驱动是工业自动化和电动交通的核心,功率器件的选择直接决定系统效率与可靠性。传统硅基IGBT和MOSFET在开关速度、损耗方面存在瓶颈,而氮化镓(GaN)作为宽禁带半导体,凭借高电子迁移率、低栅极电荷和近乎为零的反向恢复电荷,正成为电机驱动领域的热门选择。EPC建立电机驱动中心,提供完整的评估平台,覆盖从低压家电到中压伺服的应用场景。文章从GaN器件原理出发,对比传统硅器件,详解三相BLDC/PMSM驱动系统的搭建、栅极驱动与Layout设计、死区时间设置及参数计算实例,并分享测试中遇到的振铃、EMI等高

weixin_29168675的博客 325

AWVS安装与使用教程

Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的自动化网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。它可以扫描任何可通过Web浏览器访问的和遵循HTTP/HTTPS规则的Web站点和Web应用程序。适用于任何中小型和大型企业的内联网、外延网和面向客户、雇员、厂商和其它人员的Web网站。WVS可以通过检查SQL注入攻击漏洞、XSS跨站脚本攻击漏洞等漏洞来审核Web应用程序的安全性。

qq_59607911的博客 4099

CNN/RNN/Transformer/GAN四大架构工程实战解剖

神经网络架构选择是AI落地的核心决策点,本质是数据特性、算力约束与业务指标间的动态平衡。CNN凭借局部感受野与权值共享,在图像识别与工业检测中实现高精度低延迟;RNN及其变体LSTM/GRU通过门控机制建模时序依赖,但需直面梯度消失与硬件功耗挑战;Transformer以自注意力突破局部与顺序限制,却面临O(n²)显存瓶颈,需依赖FlashAttention、ALiBi等工程优化;GAN则在生成任务中依赖对抗动力学稳定性,对损失设计与优化器耦合极为敏感。本文聚焦3×3卷积核选型、RNN梯度裁剪阈值1.0、T

weixin_33884611的博客 389

超级详细的H3C模拟器HCL的交换机Telnet服务配置过程(图文)

VC++2017 MFC关于一个电话机房配线架进线出线节点数据库管理的程序 机房数据库原来是一个EXCEL表,查询,输入数据不方便。现用access数据库ODBC访问。平常没编过程序,编个程序练练手。记录一下学习中的问题,和解决方法,供大家分享,讨论,以便共同进步。希望多提宝贵意见,携手提高代码水平。 程序写的很不规范,代码冗余,显得程序臃肿,代码重用性差。发表这篇博客的目的也是为了改进这个程序。CListCtrl 单元格可以编辑,有Combo Box下拉列表功能。使用PreTranslateMe

techcai的博客 1万+

PyTorch 1.x 生成对抗网络实用指南(一)

随着研究与开发的持续进展,生成对抗网络(GANs)已成为深度学习领域的下一个重要突破。本书重点介绍了 GAN 相对于传统生成模型的主要改进,并通过动手实例向你展示如何最大化 GAN 的优势。本书将帮助你理解如何利用 PyTorch 工作的 GAN 架构。你将熟悉这个最灵活的深度学习工具包,并用它将想法转化为实际可运行的代码。你将通过样本生成方法将 GAN 模型应用于计算机视觉、多媒体和自然语言处理等领域。本书面向那些希望通过 PyTorch 1.0 实现 GAN 模型的机器学习从业人员和深度学习研究人员。你

龙哥盟 1105

【工控基础】UVW平台踩坑

1 每个轴按顺时针或逆时针走一个距离,就是旋转。 2 图中W动,U轴V轴不动,就是X方向的平移 3 图中U轴V轴同时动,X不动,就是Y方向的平移。

songhuangong123的博客 6957

RK3588与FocalTech触摸屏代码适配全解析:从原理到实战

摘要:本文详细介绍了瑞芯微RK3588处理器与FocalTech触摸屏的适配过程,包括硬件特性、驱动加载、设备树配置和常见问题解决方案。RK3588作为8nm工艺的高性能处理器,具备强大的计算能力和丰富的接口资源;FocalTech触摸屏则采用电容式技术,支持I2C/SPI接口。适配关键步骤包括驱动程序加载、硬件连接检查、设备树配置和内核版本兼容性处理,并提供了代码示例和问题排查方法。随着嵌入式设备智能化发展,该适配技术将持续优化,为智能交互提供更优解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 273
上一篇: pytorch学习笔记6--过拟合,交叉验证,正则化
下一篇: linux下安装MongoDB
jeffery0628
博客等级 码龄11年 39粉丝 112原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值