Rumah > Peranti teknologi > AI > Fahami dengan mendalam fungsi teras Pytorch: terbitan automatik!

Fahami dengan mendalam fungsi teras Pytorch: terbitan automatik!

PHPz
Lepaskan: 2024-01-10 19:06:28
ke hadapan
562 orang telah melayarinya

Hai, saya Xiaozhuang!

Mengenai operasi terbitan automatik dalam pytorch, perkenalkan konsep terbitan automatik dalam pytorch

Derivasi automatik ialah fungsi penting rangka kerja pembelajaran mendalam, digunakan untuk mengira kecerunan dan mencapai kemas kini dan pengoptimuman parameter.

PyTorch ialah rangka kerja pembelajaran mendalam yang biasa digunakan yang menggunakan graf pengiraan dinamik dan mekanisme terbitan automatik untuk memudahkan proses pengiraan kecerunan.

突破 Pytorch 核心点,自动求导 !!

Penerbitan automatik

Penerbitan automatik ialah fungsi penting rangka kerja pembelajaran mesin Ia boleh mengira secara automatik derivatif (kecerunan) fungsi, sekali gus memudahkan proses melatih model pembelajaran mendalam. Dalam pembelajaran mendalam, model selalunya mengandungi sejumlah besar parameter, dan pengiraan kecerunan secara manual boleh menjadi rumit dan terdedah kepada ralat. PyTorch menyediakan fungsi terbitan automatik, membolehkan pengguna mengira kecerunan dengan mudah dan melakukan perambatan belakang untuk mengemas kini parameter model. Pengenalan ciri ini sangat meningkatkan kecekapan dan kemudahan penggunaan pembelajaran mendalam.

Sedikit prinsip

Fungsi terbitan automatik PyTorch adalah berdasarkan graf pengiraan dinamik. Graf pengiraan ialah struktur graf yang digunakan untuk mewakili proses pengiraan fungsi, di mana nod mewakili operasi dan tepi mewakili aliran data. Berbeza daripada graf pengiraan statik, struktur graf pengiraan dinamik boleh dijana secara dinamik berdasarkan proses pelaksanaan sebenar, dan bukannya ditakrifkan terlebih dahulu. Reka bentuk ini menjadikan PyTorch fleksibel dan berskala untuk menyesuaikan diri dengan keperluan pengkomputeran yang berbeza. Melalui graf pengiraan dinamik, PyTorch boleh merekodkan sejarah operasi, melakukan perambatan belakang dan mengira kecerunan mengikut keperluan. Ini menjadikan PyTorch sebagai salah satu rangka kerja yang digunakan secara meluas dalam bidang pembelajaran mendalam.

Dalam PyTorch, setiap operasi pengguna direkodkan untuk membina graf pengiraan. Dengan cara ini, apabila kecerunan perlu dikira, PyTorch boleh melakukan perambatan balik mengikut graf pengiraan dan secara automatik mengira kecerunan setiap parameter kepada fungsi kehilangan. Mekanisme terbitan automatik ini berdasarkan graf pengiraan dinamik menjadikan PyTorch fleksibel dan berskala, menjadikannya sesuai untuk pelbagai struktur rangkaian saraf yang kompleks.

Operasi asas untuk terbitan automatik

1. Tensor

Dalam PyTorch, tensor ialah struktur data asas untuk terbitan automatik. Tensor adalah serupa dengan tatasusunan berbilang dimensi dalam NumPy, tetapi mempunyai ciri tambahan seperti terbitan automatik. Melalui kelas obor.Tensor, pengguna boleh mencipta tensor dan melakukan pelbagai operasi padanya.

import torch# 创建张量x = torch.tensor([2.0], requires_grad=True)
Salin selepas log masuk

Dalam contoh di atas, require_grad=True bermaksud kita ingin membezakan secara automatik tensor ini.

2. Pembinaan graf pengiraan

Setiap operasi yang dilakukan akan mencipta nod dalam graf pengiraan. PyTorch menyediakan pelbagai operasi tensor, seperti penambahan, pendaraban, fungsi pengaktifan, dsb., yang akan meninggalkan kesan dalam graf pengiraan.

# 张量操作y = x ** 2z = 2 * y + 3
Salin selepas log masuk

Dalam contoh di atas, proses pengiraan y dan z direkodkan dalam graf pengiraan.

3. Pengiraan kecerunan dan rambatan belakang

Setelah graf pengiraan dibina, rambatan belakang boleh dilakukan dengan memanggil kaedah .backward() untuk mengira kecerunan secara automatik.

# 反向传播z.backward()
Salin selepas log masuk

Pada ketika ini, kecerunan x boleh diperolehi dengan mengakses x.grad.

# 获取梯度print(x.grad)
Salin selepas log masuk

4. Lumpuhkan penjejakan kecerunan

Kadangkala, kami ingin melumpuhkan penjejakan kecerunan untuk operasi tertentu, kami boleh menggunakan pengurus konteks torch.no_grad().

with torch.no_grad():# 在这个区域内的操作不会被记录在计算图中w = x + 1
Salin selepas log masuk

5 Kecerunan jelas

Dalam gelung latihan, biasanya perlu mengosongkan kecerunan sebelum setiap rambatan belakang untuk mengelakkan pengumpulan kecerunan.

# 清零梯度x.grad.zero_()
Salin selepas log masuk

Satu kes lengkap: terbitan automatik regresi linear

Untuk menunjukkan proses terbitan automatik dengan lebih khusus, mari kita pertimbangkan masalah regresi linear mudah. Kami mentakrifkan model linear dan fungsi kehilangan ralat purata kuasa dua dan menggunakan terbitan automatik untuk mengoptimumkan parameter model.

import torch# 数据准备X = torch.tensor([[1.0], [2.0], [3.0]])y = torch.tensor([[2.0], [4.0], [6.0]])# 模型参数w = torch.tensor([[0.0]], requires_grad=True)b = torch.tensor([[0.0]], requires_grad=True)# 模型和损失函数def linear_model(X, w, b):return X @ w + bdef mean_squared_error(y_pred, y_true):return ((y_pred - y_true) ** 2).mean()# 训练循环learning_rate = 0.01epochs = 100for epoch in range(epochs):# 前向传播y_pred = linear_model(X, w, b)loss = mean_squared_error(y_pred, y)# 反向传播loss.backward()# 更新参数with torch.no_grad():w -= learning_rate * w.gradb -= learning_rate * b.grad# 清零梯度w.grad.zero_()b.grad.zero_()# 打印最终参数print("训练后的参数:")print("权重 w:", w)print("偏置 b:", b)
Salin selepas log masuk

Dalam contoh ini, kami mentakrifkan model linear mudah dan fungsi kehilangan ralat min kuasa dua. Melalui berbilang gelung latihan berulang, parameter w dan b model akan dioptimumkan untuk meminimumkan fungsi kehilangan.

Akhirnya

Derivasi automatik dalam PyTorch menyediakan sokongan yang kuat untuk pembelajaran mendalam, menjadikan latihan model lebih mudah dan lebih cekap.

Melalui graf pengiraan dinamik dan pengiraan kecerunan, pengguna boleh dengan mudah mentakrifkan struktur rangkaian saraf yang kompleks dan melaksanakan algoritma pengoptimuman seperti penurunan kecerunan melalui terbitan automatik.

Ini membolehkan penyelidik dan jurutera pembelajaran mendalam menumpukan lebih pada reka bentuk model dan eksperimen tanpa perlu risau tentang butiran pengiraan kecerunan.

Atas ialah kandungan terperinci Fahami dengan mendalam fungsi teras Pytorch: terbitan automatik!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:51cto.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan