Rumah >Peranti teknologi >AI >Panduan Komprehensif untuk Membangun Model Transformer dengan Pytorch
Tujuan tutorial ini adalah untuk memberikan pemahaman yang komprehensif tentang cara membina model pengubah menggunakan pytorch. Transformer adalah salah satu model yang paling berkuasa dalam pembelajaran mesin moden. Mereka telah merevolusikan bidang ini, terutamanya dalam tugas pemprosesan bahasa semulajadi (NLP) seperti terjemahan bahasa dan ringkasan teks. Rangkaian memori jangka pendek (LSTM) telah digantikan oleh transformer dalam tugas-tugas ini kerana keupayaan mereka untuk mengendalikan ketergantungan jarak jauh dan pengiraan selari.
Alat yang digunakan dalam panduan ini untuk membina Transformer adalah Pytorch, sebuah perpustakaan pembelajaran mesin sumber terbuka yang popular yang terkenal dengan kesederhanaan, fleksibiliti, dan kecekapannya. Dengan graf pengiraan yang dinamik dan perpustakaan yang luas, Pytorch telah menjadi penyelidik dan pemaju dalam bidang pembelajaran mesin dan kecerdasan buatan.
Bagi mereka yang tidak dikenali dengan Pytorch, lawatan ke kursus DataCamp, Pengenalan kepada Pembelajaran Deep dengan Pytorch disyorkan untuk asas yang kukuh.pertama kali diperkenalkan dalam perhatian kertas adalah semua yang anda perlukan oleh Vaswani et al., Transformer telah menjadi asas banyak tugas NLP kerana reka bentuk dan keberkesanannya yang unik.
Di tengah-tengah Transformers adalah mekanisme perhatian, khususnya konsep 'perhatian diri,' yang membolehkan model untuk menimbang dan mengutamakan bahagian-bahagian data input yang berlainan. Mekanisme ini adalah apa yang membolehkan transformer menguruskan ketergantungan jarak jauh dalam data. Ia pada asasnya adalah skim pembobotan yang membolehkan model memberi tumpuan kepada bahagian -bahagian input yang berlainan apabila menghasilkan output.Contohnya, dalam tugas terjemahan kalimat, sambil menerjemahkan perkataan tertentu, model mungkin memberikan berat perhatian yang lebih tinggi kepada kata -kata yang berkaitan dengan tatabahasa atau semantik dengan kata sasaran. Proses ini membolehkan pengubah untuk menangkap kebergantungan antara perkataan atau ciri, tanpa mengira jarak mereka antara satu sama lain dalam urutan.
Kesan Transformers dalam bidang NLP tidak boleh dilebih -lebihkan. Mereka telah mengatasi model tradisional dalam banyak tugas, menunjukkan keupayaan unggul untuk memahami dan menjana bahasa manusia dengan cara yang lebih bernuansa.
Untuk pemahaman yang lebih mendalam tentang NLP, pengenalan DataCamp untuk pemprosesan bahasa semulajadi dalam kursus python adalah sumber yang disyorkan.
Menyediakan Pytorch
Sebelum menyelam ke dalam membina pengubah, adalah penting untuk menubuhkan persekitaran kerja dengan betul. Pertama dan terpenting, pytorch perlu dipasang. Pytorch (versi stabil semasa - 2.0.1) boleh dipasang dengan mudah melalui pengurus pakej PIP atau Conda.
untuk pip, gunakan arahan:
pip3 install torch torchvision torchaudio
untuk menggunakan pytorch dengan CPU sila lawati dokumentasi pytorch.
Selain itu, bermanfaat untuk mempunyai pemahaman asas tentang konsep pembelajaran mendalam, kerana ini akan menjadi asas untuk memahami operasi transformer. Bagi mereka yang memerlukan penyegaran, kursus DataCamp Deep Learning in Python adalah sumber yang berharga yang merangkumi konsep utama dalam pembelajaran mendalam.
Untuk membina model Transformer, langkah -langkah berikut adalah perlu:
Kami akan bermula dengan mengimport perpustakaan Pytorch untuk fungsi teras, modul rangkaian saraf untuk mewujudkan rangkaian saraf, modul pengoptimuman untuk rangkaian latihan, dan fungsi utiliti data untuk mengendalikan data. Di samping itu, kami akan mengimport modul matematik python standard untuk operasi matematik dan modul salinan untuk membuat salinan objek kompleks.
Alat ini menetapkan asas untuk menentukan seni bina model, menguruskan data, dan mewujudkan proses latihan.
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
Mekanisme perhatian multi-kepala mengira perhatian antara setiap pasangan kedudukan dalam urutan. Ia terdiri daripada pelbagai "kepala perhatian" yang menangkap aspek yang berbeza dari urutan input.
Untuk mengetahui lebih lanjut mengenai perhatian multi-kepala, lihat bahagian Mekanisme Perhatian ini dari Konsep Konsep Model Besar (LLMS).
Rajah 1. Perhatian Multi-Head (Sumber: Imej Dibuat oleh Pengarang)
import torch import torch.nn as nn import torch.optim as optim import torch.utils.data as data import math import copy
definisi kelas dan permulaan:
class MultiHeadAttention(nn.Module): def __init__(self, d_model, num_heads): super(MultiHeadAttention, self).__init__() # Ensure that the model dimension (d_model) is divisible by the number of heads assert d_model % num_heads == 0, "d_model must be divisible by num_heads" # Initialize dimensions self.d_model = d_model # Model's dimension self.num_heads = num_heads # Number of attention heads self.d_k = d_model // num_heads # Dimension of each head's key, query, and value # Linear layers for transforming inputs self.W_q = nn.Linear(d_model, d_model) # Query transformation self.W_k = nn.Linear(d_model, d_model) # Key transformation self.W_v = nn.Linear(d_model, d_model) # Value transformation self.W_o = nn.Linear(d_model, d_model) # Output transformation def scaled_dot_product_attention(self, Q, K, V, mask=None): # Calculate attention scores attn_scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(self.d_k) # Apply mask if provided (useful for preventing attention to certain parts like padding) if mask is not None: attn_scores = attn_scores.masked_fill(mask == 0, -1e9) # Softmax is applied to obtain attention probabilities attn_probs = torch.softmax(attn_scores, dim=-1) # Multiply by values to obtain the final output output = torch.matmul(attn_probs, V) return output def split_heads(self, x): # Reshape the input to have num_heads for multi-head attention batch_size, seq_length, d_model = x.size() return x.view(batch_size, seq_length, self.num_heads, self.d_k).transpose(1, 2) def combine_heads(self, x): # Combine the multiple heads back to original shape batch_size, _, seq_length, d_k = x.size() return x.transpose(1, 2).contiguous().view(batch_size, seq_length, self.d_model) def forward(self, Q, K, V, mask=None): # Apply linear transformations and split heads Q = self.split_heads(self.W_q(Q)) K = self.split_heads(self.W_k(K)) V = self.split_heads(self.W_v(V)) # Perform scaled dot-product attention attn_output = self.scaled_dot_product_attention(Q, K, V, mask) # Combine heads and apply output transformation output = self.W_o(self.combine_heads(attn_output)) return outputKelas ditakrifkan sebagai subclass Nn.Module Pytorch.
perhatian dot-produk yang berskala:
pip3 install torch torchvision torchaudio
Pemisahan kepala:
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
Kaedah ini membentuk semula input x ke dalam bentuk (batch_size, num_heads, seq_length, d_k). Ia membolehkan model memproses pelbagai kepala perhatian serentak, yang membolehkan pengiraan selari.
menggabungkan kepala:
import torch import torch.nn as nn import torch.optim as optim import torch.utils.data as data import math import copy
Selepas memohon perhatian kepada setiap kepala secara berasingan, kaedah ini menggabungkan hasilnya kembali ke dalam satu tensor bentuk (batch_size, seq_length, d_model). Ini menyediakan keputusan untuk pemprosesan selanjutnya.
Kaedah ke hadapan:
class MultiHeadAttention(nn.Module): def __init__(self, d_model, num_heads): super(MultiHeadAttention, self).__init__() # Ensure that the model dimension (d_model) is divisible by the number of heads assert d_model % num_heads == 0, "d_model must be divisible by num_heads" # Initialize dimensions self.d_model = d_model # Model's dimension self.num_heads = num_heads # Number of attention heads self.d_k = d_model // num_heads # Dimension of each head's key, query, and value # Linear layers for transforming inputs self.W_q = nn.Linear(d_model, d_model) # Query transformation self.W_k = nn.Linear(d_model, d_model) # Key transformation self.W_v = nn.Linear(d_model, d_model) # Value transformation self.W_o = nn.Linear(d_model, d_model) # Output transformation def scaled_dot_product_attention(self, Q, K, V, mask=None): # Calculate attention scores attn_scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(self.d_k) # Apply mask if provided (useful for preventing attention to certain parts like padding) if mask is not None: attn_scores = attn_scores.masked_fill(mask == 0, -1e9) # Softmax is applied to obtain attention probabilities attn_probs = torch.softmax(attn_scores, dim=-1) # Multiply by values to obtain the final output output = torch.matmul(attn_probs, V) return output def split_heads(self, x): # Reshape the input to have num_heads for multi-head attention batch_size, seq_length, d_model = x.size() return x.view(batch_size, seq_length, self.num_heads, self.d_k).transpose(1, 2) def combine_heads(self, x): # Combine the multiple heads back to original shape batch_size, _, seq_length, d_k = x.size() return x.transpose(1, 2).contiguous().view(batch_size, seq_length, self.d_model) def forward(self, Q, K, V, mask=None): # Apply linear transformations and split heads Q = self.split_heads(self.W_q(Q)) K = self.split_heads(self.W_k(K)) V = self.split_heads(self.W_v(V)) # Perform scaled dot-product attention attn_output = self.scaled_dot_product_attention(Q, K, V, mask) # Combine heads and apply output transformation output = self.W_o(self.combine_heads(attn_output)) return output
Kaedah hadapan adalah di mana pengiraan sebenar berlaku:
Secara ringkasnya, kelas multiheadattention merangkumi mekanisme perhatian multi-kepala yang biasa digunakan dalam model pengubah. Ia menjaga memisahkan input ke dalam pelbagai kepala perhatian, memohon perhatian kepada setiap kepala, dan kemudian menggabungkan hasilnya. Dengan berbuat demikian, model dapat menangkap pelbagai hubungan dalam data input pada skala yang berbeza, meningkatkan keupayaan ekspresif model.
class MultiHeadAttention(nn.Module): def __init__(self, d_model, num_heads):
definisi kelas:
def scaled_dot_product_attention(self, Q, K, V, mask=None):
Kelas adalah subclass Nn.Module Pytorch, yang bermaksud ia akan mewarisi semua fungsi yang diperlukan untuk bekerja dengan lapisan rangkaian saraf.
Inisialisasi:
pip3 install torch torchvision torchaudio
Kaedah ke hadapan:
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
pengekodan posisi
import torch import torch.nn as nn import torch.optim as optim import torch.utils.data as data import math import copy
definisi kelas:
class MultiHeadAttention(nn.Module): def __init__(self, d_model, num_heads): super(MultiHeadAttention, self).__init__() # Ensure that the model dimension (d_model) is divisible by the number of heads assert d_model % num_heads == 0, "d_model must be divisible by num_heads" # Initialize dimensions self.d_model = d_model # Model's dimension self.num_heads = num_heads # Number of attention heads self.d_k = d_model // num_heads # Dimension of each head's key, query, and value # Linear layers for transforming inputs self.W_q = nn.Linear(d_model, d_model) # Query transformation self.W_k = nn.Linear(d_model, d_model) # Key transformation self.W_v = nn.Linear(d_model, d_model) # Value transformation self.W_o = nn.Linear(d_model, d_model) # Output transformation def scaled_dot_product_attention(self, Q, K, V, mask=None): # Calculate attention scores attn_scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(self.d_k) # Apply mask if provided (useful for preventing attention to certain parts like padding) if mask is not None: attn_scores = attn_scores.masked_fill(mask == 0, -1e9) # Softmax is applied to obtain attention probabilities attn_probs = torch.softmax(attn_scores, dim=-1) # Multiply by values to obtain the final output output = torch.matmul(attn_probs, V) return output def split_heads(self, x): # Reshape the input to have num_heads for multi-head attention batch_size, seq_length, d_model = x.size() return x.view(batch_size, seq_length, self.num_heads, self.d_k).transpose(1, 2) def combine_heads(self, x): # Combine the multiple heads back to original shape batch_size, _, seq_length, d_k = x.size() return x.transpose(1, 2).contiguous().view(batch_size, seq_length, self.d_model) def forward(self, Q, K, V, mask=None): # Apply linear transformations and split heads Q = self.split_heads(self.W_q(Q)) K = self.split_heads(self.W_k(K)) V = self.split_heads(self.W_v(V)) # Perform scaled dot-product attention attn_output = self.scaled_dot_product_attention(Q, K, V, mask) # Combine heads and apply output transformation output = self.W_o(self.combine_heads(attn_output)) return outputKelas ditakrifkan sebagai subclass Nn.Module Pytorch, yang membolehkannya digunakan sebagai lapisan pytorch standard.
Inisialisasi:
class MultiHeadAttention(nn.Module): def __init__(self, d_model, num_heads):
Kaedah ke hadapan:
def scaled_dot_product_attention(self, Q, K, V, mask=None):Kaedah ke hadapan hanya menambah pengekodan kedudukan ke input x.
Ia menggunakan unsur -unsur X.size (1) pertama PE untuk memastikan bahawa pengekodan posisi sesuai dengan panjang urutan sebenar x.
Ringkasan
Kelas PosisiCoding menambah maklumat mengenai kedudukan token dalam urutan. Oleh kerana model pengubah tidak mempunyai pengetahuan yang melekat pada susunan token (disebabkan oleh mekanisme perhatiannya sendiri), kelas ini membantu model untuk mempertimbangkan kedudukan token dalam urutan. Fungsi sinusoidal yang digunakan dipilih untuk membolehkan model dengan mudah belajar untuk menghadiri kedudukan relatif, kerana mereka menghasilkan pengekodan yang unik dan lancar untuk setiap kedudukan dalam urutan.
Rajah 2. Bahagian pengekod rangkaian pengubah (sumber: imej dari kertas asal)
pip3 install torch torchvision torchaudio
definisi kelas:
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
Kelas ditakrifkan sebagai subclass Nn.Module Pytorch, yang bermaksud ia boleh digunakan sebagai blok bangunan untuk rangkaian saraf di Pytorch.
Inisialisasi:
import torch import torch.nn as nn import torch.optim as optim import torch.utils.data as data import math import copy
Parameter:
Komponen:
Kaedah ke hadapan:
class MultiHeadAttention(nn.Module): def __init__(self, d_model, num_heads): super(MultiHeadAttention, self).__init__() # Ensure that the model dimension (d_model) is divisible by the number of heads assert d_model % num_heads == 0, "d_model must be divisible by num_heads" # Initialize dimensions self.d_model = d_model # Model's dimension self.num_heads = num_heads # Number of attention heads self.d_k = d_model // num_heads # Dimension of each head's key, query, and value # Linear layers for transforming inputs self.W_q = nn.Linear(d_model, d_model) # Query transformation self.W_k = nn.Linear(d_model, d_model) # Key transformation self.W_v = nn.Linear(d_model, d_model) # Value transformation self.W_o = nn.Linear(d_model, d_model) # Output transformation def scaled_dot_product_attention(self, Q, K, V, mask=None): # Calculate attention scores attn_scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(self.d_k) # Apply mask if provided (useful for preventing attention to certain parts like padding) if mask is not None: attn_scores = attn_scores.masked_fill(mask == 0, -1e9) # Softmax is applied to obtain attention probabilities attn_probs = torch.softmax(attn_scores, dim=-1) # Multiply by values to obtain the final output output = torch.matmul(attn_probs, V) return output def split_heads(self, x): # Reshape the input to have num_heads for multi-head attention batch_size, seq_length, d_model = x.size() return x.view(batch_size, seq_length, self.num_heads, self.d_k).transpose(1, 2) def combine_heads(self, x): # Combine the multiple heads back to original shape batch_size, _, seq_length, d_k = x.size() return x.transpose(1, 2).contiguous().view(batch_size, seq_length, self.d_model) def forward(self, Q, K, V, mask=None): # Apply linear transformations and split heads Q = self.split_heads(self.W_q(Q)) K = self.split_heads(self.W_k(K)) V = self.split_heads(self.W_v(V)) # Perform scaled dot-product attention attn_output = self.scaled_dot_product_attention(Q, K, V, mask) # Combine heads and apply output transformation output = self.W_o(self.combine_heads(attn_output)) return output
input:
Langkah -langkah pemprosesan:
Ringkasan:
Kelas Encoderlayer mentakrifkan satu lapisan pengekod pengubah. Ia merangkumi mekanisme ketentuan diri pelbagai kepala diikuti oleh rangkaian saraf ke hadapan yang bijak, dengan sambungan sisa, normalisasi lapisan, dan keciciran yang digunakan sesuai. Komponen ini bersama -sama membolehkan pengekod untuk menangkap hubungan kompleks dalam data input dan mengubahnya menjadi perwakilan yang berguna untuk tugas hiliran. Biasanya, pelbagai lapisan pengekod tersebut disusun untuk membentuk bahagian pengekod lengkap model pengubah.
pip3 install torch torchvision torchaudio
definisi kelas:
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
Inisialisasi:
import torch import torch.nn as nn import torch.optim as optim import torch.utils.data as data import math import copy
Parameter :
Komponen :
forward kaedah :
class MultiHeadAttention(nn.Module): def __init__(self, d_model, num_heads): super(MultiHeadAttention, self).__init__() # Ensure that the model dimension (d_model) is divisible by the number of heads assert d_model % num_heads == 0, "d_model must be divisible by num_heads" # Initialize dimensions self.d_model = d_model # Model's dimension self.num_heads = num_heads # Number of attention heads self.d_k = d_model // num_heads # Dimension of each head's key, query, and value # Linear layers for transforming inputs self.W_q = nn.Linear(d_model, d_model) # Query transformation self.W_k = nn.Linear(d_model, d_model) # Key transformation self.W_v = nn.Linear(d_model, d_model) # Value transformation self.W_o = nn.Linear(d_model, d_model) # Output transformation def scaled_dot_product_attention(self, Q, K, V, mask=None): # Calculate attention scores attn_scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(self.d_k) # Apply mask if provided (useful for preventing attention to certain parts like padding) if mask is not None: attn_scores = attn_scores.masked_fill(mask == 0, -1e9) # Softmax is applied to obtain attention probabilities attn_probs = torch.softmax(attn_scores, dim=-1) # Multiply by values to obtain the final output output = torch.matmul(attn_probs, V) return output def split_heads(self, x): # Reshape the input to have num_heads for multi-head attention batch_size, seq_length, d_model = x.size() return x.view(batch_size, seq_length, self.num_heads, self.d_k).transpose(1, 2) def combine_heads(self, x): # Combine the multiple heads back to original shape batch_size, _, seq_length, d_k = x.size() return x.transpose(1, 2).contiguous().view(batch_size, seq_length, self.d_model) def forward(self, Q, K, V, mask=None): # Apply linear transformations and split heads Q = self.split_heads(self.W_q(Q)) K = self.split_heads(self.W_k(K)) V = self.split_heads(self.W_v(V)) # Perform scaled dot-product attention attn_output = self.scaled_dot_product_attention(Q, K, V, mask) # Combine heads and apply output transformation output = self.W_o(self.combine_heads(attn_output)) return output
input :
Langkah -langkah pemprosesan:
Ringkasan:
Kelas Decoderlayer mentakrifkan satu lapisan penyahkod pengubah. Ia terdiri daripada mekanisme perhatian diri pelbagai kepala, mekanisme penangkapan silang pelbagai (yang menghadiri output pengekod), rangkaian saraf ke hadapan yang bijak, dan sambungan sisa yang sama, normalisasi lapisan, dan lapisan dropout. Gabungan ini membolehkan penyahkod untuk menghasilkan output yang bermakna berdasarkan perwakilan encoder, dengan mengambil kira kedua -dua urutan sasaran dan urutan sumber. Seperti pengekod, lapisan penyahkod berbilang biasanya disusun untuk membentuk bahagian penyahkod lengkap model pengubah.
Seterusnya, blok pengekod dan penyahkod dibawa bersama untuk membina model pengubah komprehensif.
Rajah 4. Rangkaian Transformer (Sumber: Imej dari Kertas Asal)
pip3 install torch torchvision torchaudio
definisi kelas:
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
Inisialisasi:
import torch import torch.nn as nn import torch.optim as optim import torch.utils.data as data import math import copyPembina mengambil parameter berikut:
menghasilkan kaedah topeng:
pip3 install torch torchvision torchaudio
Kaedah ini digunakan untuk membuat topeng untuk urutan sumber dan sasaran, memastikan bahawa token padding diabaikan dan token masa depan tidak dapat dilihat semasa latihan untuk urutan sasaran.
Kaedah ke hadapan:
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
Kaedah ini mentakrifkan pas hadapan untuk pengubah, mengambil urutan sumber dan sasaran dan menghasilkan ramalan output.
output:
output akhir adalah tensor yang mewakili ramalan model untuk urutan sasaran.
Ringkasan:
Kelas Transformer menyatukan pelbagai komponen model pengubah, termasuk embeddings, pengekodan kedudukan, lapisan encoder, dan lapisan penyahkod. Ia menyediakan antara muka yang mudah untuk latihan dan kesimpulan, merangkumi kerumitan perhatian multi-kepala, rangkaian ke hadapan, dan normalisasi lapisan.
Pelaksanaan ini mengikuti seni bina pengubah standard, menjadikannya sesuai untuk tugas-tugas urutan-ke-urutan seperti terjemahan mesin, ringkasan teks, dan lain-lain. Kemasukan pelekat memastikan model itu mematuhi kebergantungan kausal dalam urutan, mengabaikan token padding dan menghalang kebocoran maklumat dari token masa depan.
Langkah -langkah berurutan ini memberi kuasa kepada model pengubah untuk memproses urutan input dengan cekap dan menghasilkan urutan output yang sepadan.Melatih Model Transformer Pytorch
pip3 install torch torchvision torchaudio
HyperParameters:
Mewujudkan contoh pengubah:
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidiaBaris ini mewujudkan contoh kelas pengubah, memulakannya dengan hiperparameter yang diberikan. Contohnya akan mempunyai seni bina dan tingkah laku yang ditakrifkan oleh hiperparameter ini.
Menjana Data Sampel Rawak:
baris berikut menjana sumber rawak dan urutan sasaran:
Ringkasan:
Coretan kod menunjukkan cara memulakan model pengubah dan menghasilkan sumber rawak dan urutan sasaran yang boleh dimasukkan ke dalam model. Hiperparameter yang dipilih menentukan struktur dan sifat tertentu pengubah. Persediaan ini boleh menjadi sebahagian daripada skrip yang lebih besar di mana model dilatih dan dinilai pada tugas-tugas urutan-ke-urutan sebenar, seperti terjemahan mesin atau ringkasan teks.Latihan model
import torch import torch.nn as nn import torch.optim as optim import torch.utils.data as data import math import copy
Fungsi kehilangan dan pengoptimum:
Mod Latihan Model:
gelung latihan:
coretan kod melatih model untuk 100 zaman menggunakan gelung latihan biasa:
Ringkasan:
Coretan kod ini melatih model pengubah pada sumber dan urutan sasaran yang dijana secara rawak untuk 100 zaman. Ia menggunakan pengoptimuman Adam dan fungsi kehilangan silang entropi. Kerugian dicetak untuk setiap zaman, membolehkan anda memantau kemajuan latihan. Dalam senario dunia sebenar, anda akan menggantikan sumber rawak dan urutan sasaran dengan data sebenar dari tugas anda, seperti terjemahan mesin.
Selepas melatih model, prestasinya boleh dinilai pada dataset pengesahan atau dataset ujian. Berikut adalah contoh bagaimana ini dapat dilakukan:
pip3 install torch torchvision torchaudio
Mod penilaian:
Menjana data pengesahan rawak:
gelung pengesahan:
Ringkasan:
Coretan kod ini menilai model pengubah pada dataset pengesahan yang dijana secara rawak, mengira kehilangan pengesahan, dan mencetaknya. Dalam senario dunia sebenar, data pengesahan rawak harus digantikan dengan data pengesahan sebenar dari tugas yang anda sedang kerjakan. Kerugian pengesahan dapat memberi anda petunjuk bagaimana model anda melaksanakan pada data yang tidak kelihatan, yang merupakan ukuran kritikal keupayaan generalisasi model.3
kesimpulan dan sumber selanjutnyaKesimpulannya, tutorial ini menunjukkan cara membina model pengubah menggunakan pytorch, salah satu alat yang paling serba boleh untuk pembelajaran mendalam. Dengan kapasiti mereka untuk bersesuaian dan keupayaan untuk menangkap kebergantungan jangka panjang dalam data, transformer mempunyai potensi besar dalam pelbagai bidang, terutama tugas NLP seperti terjemahan, ringkasan, dan analisis sentimen.
Bagi mereka yang bersemangat untuk memperdalam pemahaman mereka tentang konsep dan teknik pembelajaran mendalam, pertimbangkan untuk meneroka kursus pembelajaran mendalam dengan keras di DataCamp. Anda juga boleh membaca tentang membina rangkaian saraf mudah dengan pytorch dalam tutorial yang berasingan.Atas ialah kandungan terperinci Panduan Komprehensif untuk Membangun Model Transformer dengan Pytorch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!