Rumah pembangunan bahagian belakang Tutorial Python Cara menggunakan PyTorch untuk latihan rangkaian saraf

Cara menggunakan PyTorch untuk latihan rangkaian saraf

Aug 02, 2023 pm 05:10 PM
rangkaian saraf kereta api pytorch

Cara menggunakan PyTorch untuk latihan rangkaian saraf

Pengenalan:
PyTorch ialah rangka kerja pembelajaran mesin sumber terbuka berdasarkan Python Kefleksibelan dan kesederhanaannya menjadikannya pilihan pertama ramai penyelidik dan jurutera. Artikel ini akan memperkenalkan anda kepada cara menggunakan PyTorch untuk latihan rangkaian saraf dan memberikan contoh kod yang sepadan.

1. Pasang PyTorch
Sebelum bermula, anda perlu memasang PyTorch terlebih dahulu. Anda boleh memilih versi yang sesuai untuk sistem pengendalian dan perkakasan anda untuk dipasang melalui panduan pemasangan yang disediakan di tapak web rasmi (https://pytorch.org/). Setelah dipasang, anda boleh mengimport perpustakaan PyTorch dalam Python dan mula menulis kod.

2. Bina model rangkaian saraf
Sebelum menggunakan PyTorch untuk melatih rangkaian saraf, anda perlu membina model yang sesuai. PyTorch menyediakan kelas yang dipanggil torch.nn.Module, yang boleh anda warisi untuk menentukan model rangkaian saraf anda sendiri. torch.nn.Module的类,您可以通过继承该类来定义自己的神经网络模型。

下面是一个简单的例子,展示了如何使用PyTorch构建一个包含两个全连接层的神经网络模型:

import torch
import torch.nn as nn

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(in_features=784, out_features=256)
        self.fc2 = nn.Linear(in_features=256, out_features=10)
    
    def forward(self, x):
        x = x.view(x.size(0), -1)
        x = self.fc1(x)
        x = torch.relu(x)
        x = self.fc2(x)
        return x

net = Net()
Salin selepas log masuk

在上面的代码中,我们首先定义了一个名为Net的类,并继承了torch.nn.Module类。在__init__方法中,我们定义了两个全连接层fc1fc2。然后,我们通过forward方法定义了数据在模型中前向传播的过程。最后,我们创建了一个Net的实例。

三、定义损失函数和优化器
在进行训练之前,我们需要定义损失函数和优化器。PyTorch提供了丰富的损失函数和优化器的选择,可以根据具体情况进行选择。

下面是一个示例,展示了如何定义一个使用交叉熵损失函数和随机梯度下降优化器的训练过程:

loss_fn = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(net.parameters(), lr=0.01)
Salin selepas log masuk

在上面的代码中,我们将交叉熵损失函数和随机梯度下降优化器分别赋值给了loss_fnoptimizer变量。net.parameters()表示我们要优化神经网络模型中的所有可学习参数,lr参数表示学习率。

四、准备数据集
在进行神经网络训练之前,我们需要准备好训练数据集和测试数据集。PyTorch提供了一些实用的工具类,可以帮助我们加载和预处理数据集。

下面是一个示例,展示了如何加载MNIST手写数字数据集并进行预处理:

import torchvision
import torchvision.transforms as transforms

transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5,), (0.5,)),
])

train_set = torchvision.datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = torch.utils.data.DataLoader(train_set, batch_size=32, shuffle=True)

test_set = torchvision.datasets.MNIST(root='./data', train=False, download=True, transform=transform)
test_loader = torch.utils.data.DataLoader(test_set, batch_size=32, shuffle=False)
Salin selepas log masuk

在上面的代码中,我们首先定义了一个transform变量,用于对数据进行预处理。然后,我们使用torchvision.datasets.MNIST类加载MNIST数据集,并使用train=Truetrain=False参数指定了训练数据集和测试数据集。最后,我们使用torch.utils.data.DataLoader类将数据集转换成一个可以迭代的数据加载器。

五、开始训练
准备好数据集后,我们就可以开始进行神经网络的训练。在一个训练循环中,我们需要依次完成以下步骤:将输入数据输入到模型中,计算损失函数,反向传播更新梯度,优化模型。

下面是一个示例,展示了如何使用PyTorch进行神经网络训练:

for epoch in range(epochs):
    running_loss = 0.0
    for i, data in enumerate(train_loader):
        inputs, labels = data
        
        optimizer.zero_grad()
        
        outputs = net(inputs)
        loss = loss_fn(outputs, labels)
        
        loss.backward()
        optimizer.step()
        
        running_loss += loss.item()
        
        if (i+1) % 100 == 0:
            print('[%d, %5d] loss: %.3f' % (epoch+1, i+1, running_loss/100))
            running_loss = 0.0
Salin selepas log masuk

在上面的代码中,我们首先使用enumerate函数遍历了训练数据加载器,得到了输入数据和标签。然后,我们将梯度清零,将输入数据输入到模型中,计算预测结果和损失函数。接着,我们通过backward方法计算梯度,再通过step方法更新模型参数。最后,我们累加损失,并根据需要进行打印。

六、测试模型
训练完成后,我们还需要测试模型的性能。我们可以通过计算模型在测试数据集上的准确率来评估模型的性能。

下面是一个示例,展示了如何使用PyTorch测试模型的准确率:

correct = 0
total = 0

with torch.no_grad():
    for data in test_loader:
        inputs, labels = data
        outputs = net(inputs)
        _, predicted = torch.max(outputs.data, 1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()

accuracy = 100 * correct / total
print('Accuracy: %.2f %%' % accuracy)
Salin selepas log masuk

在上面的代码中,我们首先定义了两个变量correcttotal,用于计算正确分类的样本和总样本数。接着,我们使用torch.no_grad()

Berikut ialah contoh mudah yang menunjukkan cara menggunakan PyTorch untuk membina model rangkaian saraf yang mengandungi dua lapisan bersambung sepenuhnya:

rrreee
Dalam kod di atas, kami mula-mula mentakrifkan kelas bernama Net dan mewarisi daripada torch.nn. Modul kelas. Dalam kaedah __init__, kami mentakrifkan dua lapisan bersambung sepenuhnya fc1 dan fc2. Kemudian, kami mentakrifkan proses penyebaran data ke hadapan dalam model melalui kaedah forward. Akhir sekali, kami mencipta contoh Net.

3. Tentukan fungsi kehilangan dan pengoptimum

Sebelum latihan, kita perlu menentukan fungsi kehilangan dan pengoptimum. PyTorch menyediakan pelbagai pilihan fungsi kehilangan dan pengoptimum, yang boleh dipilih mengikut keadaan tertentu.
  1. Berikut ialah contoh yang menunjukkan cara mentakrifkan proses latihan menggunakan fungsi kehilangan entropi silang dan pengoptimum keturunan kecerunan stokastik:
  2. rrreee
  3. Dalam kod di atas, kami menetapkan fungsi kehilangan entropi silang dan pengoptimum keturunan kecerunan stokastik secara berasingan Pembolehubah loss_fn dan optimizer diberikan. net.parameters() menunjukkan bahawa kami ingin mengoptimumkan semua parameter yang boleh dipelajari dalam model rangkaian saraf dan parameter lr menunjukkan kadar pembelajaran.
4 Sediakan set data🎜Sebelum melatih rangkaian saraf, kita perlu menyediakan set data latihan dan set data ujian. PyTorch menyediakan beberapa kelas alat praktikal yang boleh membantu kami memuatkan dan praproses set data. 🎜🎜Berikut ialah contoh yang menunjukkan cara memuatkan set data digit tulisan tangan MNIST dan praprosesnya: 🎜rrreee🎜Dalam kod di atas, kami mula-mula mentakrifkan pembolehubah transformasi untuk mengubah prapemprosesan data. Kami kemudiannya memuatkan set data MNIST menggunakan kelas torchvision.datasets.MNIST dan menentukan data latihan menggunakan parameter train=True dan train=False set dan set data ujian. Akhir sekali, kami menggunakan kelas torch.utils.data.DataLoader untuk menukar set data kepada pemuat data boleh lelar. 🎜🎜5. Mulakan latihan🎜Selepas menyediakan set data, kita boleh mula melatih rangkaian saraf. Dalam gelung latihan, kita perlu melengkapkan langkah berikut mengikut urutan: memasukkan data input ke dalam model, mengira fungsi kehilangan, merambat belakang kecerunan yang dikemas kini dan mengoptimumkan model. 🎜🎜Berikut ialah contoh yang menunjukkan cara menggunakan PyTorch untuk latihan rangkaian saraf: 🎜rrreee🎜Dalam kod di atas, kami mula-mula melintasi pemuat data latihan menggunakan fungsi enumerate untuk mendapatkan data input dan Label. Kami kemudiannya mensifarkan kecerunan, memasukkan data input ke dalam model, dan mengira ramalan dan fungsi kehilangan. Seterusnya, kami mengira kecerunan melalui kaedah undur dan kemudian mengemas kini parameter model melalui kaedah step. Akhirnya, kami mengumpul kerugian dan mencetaknya mengikut keperluan. 🎜🎜 6. Uji model 🎜Selepas latihan selesai, kita masih perlu menguji prestasi model. Kita boleh menilai prestasi model dengan mengira ketepatannya pada set data ujian. 🎜🎜Berikut ialah contoh yang menunjukkan cara menguji ketepatan model menggunakan PyTorch: 🎜rrreee🎜Dalam kod di atas, kami mula-mula mentakrifkan dua pembolehubah betul dan jumlah, digunakan untuk mengira bilangan sampel yang dikelaskan dengan betul dan jumlah bilangan sampel. Seterusnya, kami menggunakan pengurus konteks torch.no_grad() untuk mematikan pengiraan kecerunan, dengan itu mengurangkan penggunaan memori. Kemudian, kami mengira hasil ramalan secara berurutan, mengemas kini bilangan sampel yang dikelaskan dengan betul dan jumlah bilangan sampel. Akhir sekali, ketepatan dikira berdasarkan bilangan sampel yang dikelaskan dengan betul dan jumlah bilangan sampel dan dicetak. 🎜🎜Ringkasan: 🎜Melalui pengenalan artikel ini, anda telah memahami langkah asas cara menggunakan PyTorch untuk latihan rangkaian saraf, dan mempelajari cara membina model rangkaian saraf, menentukan fungsi kehilangan dan pengoptimum, menyediakan set data, memulakan latihan dan menguji model. Saya harap artikel ini dapat membantu kerja dan kajian anda dalam menggunakan PyTorch untuk latihan rangkaian saraf. 🎜🎜Rujukan: 🎜🎜🎜Tapak web rasmi PyTorch: https://pytorch.org/🎜🎜Dokumentasi PyTorch: https://pytorch.org/docs/stable/index.html🎜🎜

Atas ialah kandungan terperinci Cara menggunakan PyTorch untuk latihan rangkaian saraf. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Sumber terbuka! Di luar ZoeDepth! DepthFM: Anggaran kedalaman monokular yang cepat dan tepat! Sumber terbuka! Di luar ZoeDepth! DepthFM: Anggaran kedalaman monokular yang cepat dan tepat! Apr 03, 2024 pm 12:04 PM

0. Apakah fungsi artikel ini? Kami mencadangkan DepthFM: model anggaran kedalaman monokular generatif yang serba boleh dan pantas. Sebagai tambahan kepada tugas anggaran kedalaman tradisional, DepthFM juga menunjukkan keupayaan terkini dalam tugas hiliran seperti mengecat kedalaman. DepthFM cekap dan boleh mensintesis peta kedalaman dalam beberapa langkah inferens. Mari kita baca karya ini bersama-sama ~ 1. Tajuk maklumat kertas: DepthFM: FastMonocularDepthEstimationwithFlowMatching Pengarang: MingGui, JohannesS.Fischer, UlrichPrestel, PingchuanMa, Dmytr

Gabungan sempurna PyCharm dan PyTorch: langkah pemasangan dan konfigurasi terperinci Gabungan sempurna PyCharm dan PyTorch: langkah pemasangan dan konfigurasi terperinci Feb 21, 2024 pm 12:00 PM

PyCharm ialah persekitaran pembangunan bersepadu (IDE) yang berkuasa dan PyTorch ialah rangka kerja sumber terbuka yang popular dalam bidang pembelajaran mendalam. Dalam bidang pembelajaran mesin dan pembelajaran mendalam, menggunakan PyCharm dan PyTorch untuk pembangunan boleh meningkatkan kecekapan pembangunan dan kualiti kod. Artikel ini akan memperkenalkan secara terperinci cara memasang dan mengkonfigurasi PyTorch dalam PyCharm, dan melampirkan contoh kod khusus untuk membantu pembaca menggunakan fungsi berkuasa kedua-dua ini dengan lebih baik. Langkah 1: Pasang PyCharm dan Python

YOLO adalah abadi! YOLOv9 dikeluarkan: prestasi dan kelajuan SOTA~ YOLO adalah abadi! YOLOv9 dikeluarkan: prestasi dan kelajuan SOTA~ Feb 26, 2024 am 11:31 AM

Kaedah pembelajaran mendalam hari ini memberi tumpuan kepada mereka bentuk fungsi objektif yang paling sesuai supaya keputusan ramalan model paling hampir dengan situasi sebenar. Pada masa yang sama, seni bina yang sesuai mesti direka bentuk untuk mendapatkan maklumat yang mencukupi untuk ramalan. Kaedah sedia ada mengabaikan fakta bahawa apabila data input mengalami pengekstrakan ciri lapisan demi lapisan dan transformasi spatial, sejumlah besar maklumat akan hilang. Artikel ini akan menyelidiki isu penting apabila menghantar data melalui rangkaian dalam, iaitu kesesakan maklumat dan fungsi boleh balik. Berdasarkan ini, konsep maklumat kecerunan boleh atur cara (PGI) dicadangkan untuk menghadapi pelbagai perubahan yang diperlukan oleh rangkaian dalam untuk mencapai pelbagai objektif. PGI boleh menyediakan maklumat input lengkap untuk tugas sasaran untuk mengira fungsi objektif, dengan itu mendapatkan maklumat kecerunan yang boleh dipercayai untuk mengemas kini berat rangkaian. Di samping itu, rangka kerja rangkaian ringan baharu direka bentuk

Hello, Atlas elektrik! Robot Boston Dynamics hidup semula, gerakan pelik 180 darjah menakutkan Musk Hello, Atlas elektrik! Robot Boston Dynamics hidup semula, gerakan pelik 180 darjah menakutkan Musk Apr 18, 2024 pm 07:58 PM

Boston Dynamics Atlas secara rasmi memasuki era robot elektrik! Semalam, Atlas hidraulik hanya "menangis" menarik diri daripada peringkat sejarah Hari ini, Boston Dynamics mengumumkan bahawa Atlas elektrik sedang berfungsi. Nampaknya dalam bidang robot humanoid komersial, Boston Dynamics berazam untuk bersaing dengan Tesla. Selepas video baharu itu dikeluarkan, ia telah pun ditonton oleh lebih sejuta orang dalam masa sepuluh jam sahaja. Orang lama pergi dan peranan baru muncul. Ini adalah keperluan sejarah. Tidak dinafikan bahawa tahun ini adalah tahun letupan robot humanoid. Netizen mengulas: Kemajuan robot telah menjadikan majlis pembukaan tahun ini kelihatan seperti manusia, dan tahap kebebasan adalah jauh lebih besar daripada manusia Tetapi adakah ini benar-benar bukan filem seram? Pada permulaan video, Atlas berbaring dengan tenang di atas tanah, seolah-olah terlentang. Apa yang berikut adalah rahang-jatuh

Pengenalan kepada lima kaedah pensampelan dalam tugas penjanaan bahasa semula jadi dan pelaksanaan kod Pytorch Pengenalan kepada lima kaedah pensampelan dalam tugas penjanaan bahasa semula jadi dan pelaksanaan kod Pytorch Feb 20, 2024 am 08:50 AM

Dalam tugas penjanaan bahasa semula jadi, kaedah pensampelan ialah teknik untuk mendapatkan output teks daripada model generatif. Artikel ini akan membincangkan 5 kaedah biasa dan melaksanakannya menggunakan PyTorch. 1. GreedyDecoding Dalam penyahkodan tamak, model generatif meramalkan perkataan urutan keluaran berdasarkan urutan input masa langkah demi masa. Pada setiap langkah masa, model mengira taburan kebarangkalian bersyarat bagi setiap perkataan, dan kemudian memilih perkataan dengan kebarangkalian bersyarat tertinggi sebagai output langkah masa semasa. Perkataan ini menjadi input kepada langkah masa seterusnya, dan proses penjanaan diteruskan sehingga beberapa syarat penamatan dipenuhi, seperti urutan panjang tertentu atau penanda akhir khas. Ciri GreedyDecoding ialah setiap kali kebarangkalian bersyarat semasa adalah yang terbaik

Tutorial memasang PyCharm dengan PyTorch Tutorial memasang PyCharm dengan PyTorch Feb 24, 2024 am 10:09 AM

Sebagai rangka kerja pembelajaran mendalam yang berkuasa, PyTorch digunakan secara meluas dalam pelbagai projek pembelajaran mesin. Sebagai persekitaran pembangunan bersepadu Python yang berkuasa, PyCharm juga boleh memberikan sokongan yang baik apabila melaksanakan tugas pembelajaran mendalam. Artikel ini akan memperkenalkan secara terperinci cara memasang PyTorch dalam PyCharm dan menyediakan contoh kod khusus untuk membantu pembaca mula menggunakan PyTorch dengan cepat untuk tugasan pembelajaran mendalam. Langkah 1: Pasang PyCharm Mula-mula, kita perlu pastikan kita ada

Versi Kuaishou Sora 'Ke Ling' dibuka untuk ujian: menghasilkan video lebih 120-an, memahami fizik dengan lebih baik dan boleh memodelkan pergerakan kompleks dengan tepat Versi Kuaishou Sora 'Ke Ling' dibuka untuk ujian: menghasilkan video lebih 120-an, memahami fizik dengan lebih baik dan boleh memodelkan pergerakan kompleks dengan tepat Jun 11, 2024 am 09:51 AM

Apa? Adakah Zootopia dibawa menjadi realiti oleh AI domestik? Didedahkan bersama-sama dengan video itu ialah model penjanaan video domestik berskala besar baharu yang dipanggil "Keling". Sora menggunakan laluan teknikal yang serupa dan menggabungkan beberapa inovasi teknologi yang dibangunkan sendiri untuk menghasilkan video yang bukan sahaja mempunyai pergerakan yang besar dan munasabah, tetapi juga mensimulasikan ciri-ciri dunia fizikal dan mempunyai keupayaan gabungan konsep dan imaginasi yang kuat. Mengikut data, Keling menyokong penjanaan video ultra panjang sehingga 2 minit pada 30fps, dengan resolusi sehingga 1080p dan menyokong berbilang nisbah aspek. Satu lagi perkara penting ialah Keling bukanlah demo atau demonstrasi hasil video yang dikeluarkan oleh makmal, tetapi aplikasi peringkat produk yang dilancarkan oleh Kuaishou, pemain terkemuka dalam bidang video pendek. Selain itu, tumpuan utama adalah untuk menjadi pragmatik, bukan untuk menulis cek kosong, dan pergi ke dalam talian sebaik sahaja ia dikeluarkan Model besar Ke Ling telah pun dikeluarkan di Kuaiying.

Daya hidup kecerdasan super membangkitkan! Tetapi dengan kedatangan AI yang mengemas kini sendiri, ibu tidak perlu lagi bimbang tentang kesesakan data Daya hidup kecerdasan super membangkitkan! Tetapi dengan kedatangan AI yang mengemas kini sendiri, ibu tidak perlu lagi bimbang tentang kesesakan data Apr 29, 2024 pm 06:55 PM

Saya menangis hingga mati. Dunia sedang membina model besar. Data di Internet tidak mencukupi. Model latihan kelihatan seperti "The Hunger Games", dan penyelidik AI di seluruh dunia bimbang tentang cara memberi makan data ini kepada pemakan yang rakus. Masalah ini amat ketara dalam tugas berbilang modal. Pada masa mereka mengalami kerugian, pasukan pemula dari Jabatan Universiti Renmin China menggunakan model baharu mereka sendiri untuk menjadi yang pertama di China untuk menjadikan "suapan data yang dijana model itu sendiri" menjadi kenyataan. Selain itu, ia merupakan pendekatan serampang dua mata dari segi pemahaman dan sisi penjanaan Kedua-dua pihak boleh menjana data baharu berbilang modal yang berkualiti tinggi dan memberikan maklum balas data kepada model itu sendiri. Apakah model? Awaker 1.0, model berbilang modal besar yang baru sahaja muncul di Forum Zhongguancun. Siapa pasukan itu? Enjin Sophon. Diasaskan oleh Gao Yizhao, pelajar kedoktoran di Sekolah Kecerdasan Buatan Hillhouse Universiti Renmin.

See all articles