Operasi Asas dengan Tensor dalam PyTorch

Operasi Asas Dengan Tensor Dalam Pytorch



Tensor ialah asas PyTorch yang menyediakan struktur data yang berkuasa dan fleksibel untuk pengiraan berangka dalam pembelajaran mendalam. Seperti tatasusunan NumPy, tatasusunan ini mewakili tatasusunan berbilang dimensi tetapi dengan ciri dan pengoptimuman tambahan yang direka khusus untuk tugasan pembelajaran mendalam. Memandangkan tensor ialah objek utama untuk menyimpan dan memanipulasi data berangka dalam PyTorch, ia boleh mempunyai dimensi yang berbeza, daripada skalar (tensor 0-dimensi) kepada vektor (tensor 1-dimensi), matriks (tensor 2-dimensi) dan lebih tinggi. -tensor dimensi.

Salah satu kelebihan terbesar tensor ialah keupayaan mereka untuk melaksanakan operasi matematik yang cekap. Tensor menyokong pelbagai operasi aritmetik termasuk operasi mengikut unsur seperti penambahan, penolakan, pendaraban dan pembahagian dan operasi matriks seperti pendaraban dan transpos matriks.

PyTorch menyediakan set lengkap fungsi dan kaedah untuk memanipulasi tensor. Ini termasuk operasi untuk membentuk semula tensor, mengekstrak elemen atau sub-tensor tertentu, dan menggabungkan atau membelah tensor mengikut dimensi yang ditentukan. Selain itu, PyTorch menawarkan fungsi untuk mengindeks, menghiris dan menyiarkan tensor yang memudahkan untuk bekerja dengan tensor pelbagai bentuk dan saiz.







Dalam artikel ini, kita akan mempelajari operasi asas dengan tensor dalam PyTorch, meneroka cara mencipta tensor, melaksanakan operasi asas, memanipulasi bentuknya dan mengalihkannya antara CPU dan GPU.



Mencipta Tensor

Tensor dalam PyTorch boleh dibuat dalam beberapa cara. Mari kita terokai beberapa kaedah biasa.



Untuk mencipta tensor, kita boleh menggunakan kelas 'torch.Tensor' atau fungsi 'torch.tensor'. Mari lihat beberapa contoh:





import obor

# Buat a 1 - tensor dimensi daripada senarai Python
tensor_1d = obor. tensor ( [ 1 , 2 , 3 , 4 , 5 ] )
cetak ( tensor_1d )

# Buat a 2 - tensor dimensi daripada senarai Python bersarang
tensor_2d = obor. tensor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
cetak ( tensor_2d )

# Buat tensor sifar dengan bentuk tertentu
zeros_tensor = obor. sifar ( 3 , 2 )
cetak ( zeros_tensor )

# Buat tensor yang mempunyai bentuk tertentu
ones_tensor = obor. satu ( 2 , 3 )
cetak ( ones_tensor )

# Buat tensor dengan nilai rawak daripada taburan seragam
rawak_tensor = obor. rand ( 2 , 2 )
cetak ( rawak_tensor )

Dalam contoh yang diberikan, kami mencipta tensor bentuk yang berbeza dan memulakannya dengan pelbagai nilai seperti nombor tertentu, sifar, satu atau nilai rawak. Anda sepatutnya melihat output yang serupa apabila anda menjalankan coretan kod sebelumnya:



Operasi Tensor

Sebaik sahaja kami mempunyai tensor, kami boleh melakukan pelbagai operasi padanya seperti operasi aritmetik mengikut unsur, operasi matriks dan banyak lagi.

Operasi Aritmetik Bijak Unsur

Operasi aritmetik mengikut unsur membolehkan kami melakukan pengiraan antara tensor berdasarkan unsur demi unsur. Tensor yang terlibat dalam operasi harus mempunyai bentuk yang sama.

Berikut adalah beberapa contoh:

import obor

# Buat tensor
tensor1 = obor. tensor ( [ 1 , 2 , 3 ] )
tensor2 = obor. tensor ( [ 4 , 5 , 6 ] )

# Penambahan
tambahan = tensor1 + tensor2
cetak ( 'Tambahan:' , tambahan )

# Tolak
penolakan = tensor1 - tensor2
cetak ( 'Tolak:' , penolakan )

# Pendaraban
pendaraban = tensor1 * tensor2
cetak ( 'Pendaraban:' , pendaraban )

# Bahagian
pembahagian = tensor1 / tensor2
cetak ( 'Bahagian:' , pembahagian )

Dalam kod yang diberikan, kami melakukan operasi tambah, tolak, darab dan bahagi antara dua tensor yang menghasilkan tensor baharu dengan nilai yang dikira. Hasil coretan kod ditunjukkan seperti berikut:

Operasi Matriks

PyTorch menyediakan operasi matriks yang cekap untuk tensor seperti pendaraban matriks dan transpos. Operasi ini amat berguna untuk tugas seperti algebra linear dan pengiraan rangkaian saraf.

import obor

# Buat tensor
tensor1 = obor. tensor ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tensor2 = obor. tensor ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# Pendaraban matriks
matriks_produk = obor. tikar ( tensor1 , tensor2 )
cetak ( 'Produk Matriks:' , matriks_produk )

# Transpose matriks
matriks_transpose = tensor1. T
cetak ( 'Transpose Matriks:' , matriks_transpose )

Dalam contoh yang diberikan, kami melakukan pendaraban matriks menggunakan fungsi 'torch.matmul' dan mendapatkan transpose matriks menggunakan atribut '.T'.

Manipulasi Bentuk Tensor

Di samping melakukan operasi pada tensor, kita sering perlu memanipulasi bentuknya agar sesuai dengan keperluan tertentu. PyTorch menyediakan beberapa fungsi untuk membentuk semula tensor. Mari kita terokai beberapa fungsi ini:

import obor

# Buat tensor
tensor = obor. tensor ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# Bentuk semula tensor
reshaped_tensor = tensor. membentuk semula ( 3 , 2 )
cetak ( 'Tensor Bentuk Semula:' , reshaped_tensor )

# Dapatkan saiz tensor
saiz = tensor. saiz ( )
cetak ( 'Saiz Tensor:' , saiz )

# Dapatkan bilangan elemen dalam tensor
num_elements = tensor. beri nama ( )
cetak ( 'Bilangan Elemen:' , num_elements )

Dalam kod yang disediakan, kami membentuk semula tensor menggunakan fungsi membentuk semula, mendapatkan semula saiz tensor menggunakan kaedah saiz, dan mendapatkan jumlah bilangan elemen dalam tensor menggunakan kaedah numel.

Menggerakkan Tensor Antara CPU dan GPU

PyTorch menyediakan sokongan untuk pecutan GPU yang membolehkan kami melakukan pengiraan pada kad grafik yang boleh mempercepatkan tugas pembelajaran mendalam dengan ketara dengan mengurangkan masa latihan. Kita boleh mengalihkan tensor antara CPU dan GPU menggunakan kaedah 'ke'.

Catatan : Ini hanya boleh dilakukan jika anda mempunyai GPU NVIDIA dengan CUDA pada mesin anda.

import obor

# Buat tensor pada CPU
tensor_cpu = obor. tensor ( [ 1 , 2 , 3 ] )

# Semak jika GPU tersedia
jika obor. berbeza . boleh didapati ( ) :
# Alihkan tensor ke GPU
tensor_gpu = tensor_cpu. kepada ( 'berbeza' )
cetak ( 'Tensor pada GPU:' , tensor_gpu )
lain :
cetak ( 'GPU tidak tersedia.' )

Dalam kod yang disediakan, kami menyemak sama ada GPU tersedia menggunakan torch.cuda.is_available(). Jika GPU tersedia, kami memindahkan tensor daripada CPU ke GPU menggunakan kaedah 'ke' dengan hujah 'cuda'.

Kesimpulan

Memahami operasi tensor asas adalah penting untuk bekerja dengan PyTorch dan membina model pembelajaran mendalam. Dalam artikel ini, kami meneroka cara membuat tensor, melaksanakan operasi asas, memanipulasi bentuknya dan mengalihkannya antara CPU dan GPU. Berbekalkan pengetahuan ini, anda kini boleh mula bekerja dengan tensor dalam PyTorch, melakukan pengiraan dan membina model pembelajaran mendalam yang canggih. Tensor berfungsi sebagai asas untuk perwakilan dan manipulasi data dalam PyTorch yang membolehkan anda mengeluarkan kuasa penuh rangka kerja pembelajaran mesin serba boleh ini.