PyTorch kullanarak doğrusal regresyon

| | | | | | | | |

Önce, Python ortamınıza PyTorch`u yüklemeniz gerekecek. Bunu yapmanın en kolay yolu — pip veya conda aracını kullanın. pytorch.org adresini ziyaret edin ve Python yorumlayıcınızın ve kullanmak istediğiniz paket yöneticinizin sürümünü yükleyin.


# Bu Python kodunu bir Jupyter not defterinde çalıştırabiliriz
# doğru sürümü otomatik olarak yüklemek için
# PyTorch.


# http://pytorch.org / işletim sisteminden içe aktarma yolundan

`dan < kod sınıfı = "plain"> wheel.pep425tags içe aktar get_abbr_impl, get_impl_ver, get_abi_tag

platform = `{} {} - {}` . format (get_abbr_impl (), get_impl_ver (), get_abi_tag ())

hızlandırıcı = `cu80` if path.exists ( `/ opt / bin / nvidia-smi` ) başka `cpu`


! pip kurulumu - q http: / / download.pytorch.org / whl / {hızlandırıcı} / meşale - 0.3 . 0.post4 - {platform} - linux_x86_64.whl torchvision

PyTorch kuruluyken şimdi başlayalım koda bakın.
Gerekli kitaplık işlevlerini ve nesnelerini içe aktarmak için aşağıdaki iki satırı yazın.


import meşale

torç.autograd içe aktar Değişken

Ayrıca bazı veriler tanımlıyoruz ve bunu x_data ve y_data değişkenlerine atıyoruz, em> aşağıdaki gibidir:


x_data = Değişken (torch.Tensor ([[ 1.0 ], [ 2.0 ], [ 3.0 ]]))

y_data = Değişken (torch.Tensor ([[ 2.0 ) ], [ 4.0 ], [ 6.0 ]]))

Burada x_data & #8212; bağımsız değişkenimiz ve y_data — bağımlı değişkenimiz. Şimdilik veri setimiz bu olacak. Ardından, modelimizi tanımlamamız gerekiyor. Modelimizi tanımlamanın iki ana adımı vardır. Bunlar:

  1. Modelimizi başlatıyorlar.
  2. İleri pas bildiriliyor.

Aşağıdaki sınıfı kullanıyoruz:

class LinearRegressionModel (torch.nn.Module):


def __ init __ ( self ):

super (LinearRegressionModel, self ) .__ init __ ()

self . lineer = torch.nn.Linear ( 1 < kod sınıfı = "düz">, 1 ) # Bir giriş ve bir çıkış


def ileri ( self , x):

y_pred = öz . lineer (x)

dönüş y_pred

Gördüğünüz gibi, Model sınıfımız torch.nn.module öğesinin bir alt sınıfıdır. Ayrıca burada sadece bir girdimiz ve bir çıktımız olduğu için girdi ve çıktı boyutu 1 olan doğrusal bir model kullanıyoruz.

Ardından bu modelin bir nesnesini oluşturuyoruz.

# bizim modelimiz

bizim_modelimiz = LinearRegressionModel ()

Bundan sonra bir optimize edici seçin ve kayıp kriterleri. Burada kayıp fonksiyonumuz olarak ortalama karesel hatayı (MSE) ve optimize edicimiz olarak Stokastik Gradyan İnişini (SGD) kullanacağız. Ayrıca öğrenme oranını isteğe bağlı olarak 0,01 olarak sabitliyoruz.


kriter = torch.nn.MSELoss (size_average = False )

optimize edici = torch.optim.SGD (your_model.parameters (), lr = 0,01 )

Şimdi öğrenme aşamamıza geliyoruz. Eğitim sırasında aşağıdaki görevleri 500 kez gerçekleştiriyoruz:

  1. Verilerimizi aktararak ve tahmin edilen y değerini bularak canlı aktarım gerçekleştirin.
  2. MSE kullanarak kaybı hesaplayın.
  3. Tüm degradeleri 0`a sıfırlayın, geri yayın ve ardından ağırlıkları güncelleyin.

for epoch aralığında ( 500 ):


# İleri geçiş:

#x modele

pred_y = bizim_modelimiz (x_data)


# Hesapla ve yazdırmayı kaybet

kayıp = kriter (pred_y, y_data)


# Sıfır gradyan, geri izleme

# ve ağırlığı güncelleyin.

optimizer.zero_grad ()

kayıp.backward ()

optimizer.step ()

print ( ` çağ {}, kayıp {} ` . biçim (dönem, kayıp.veri [ 0 ]))

Eğitimi tamamladıktan sonra, aşağıdaki komutu kullanarak doğru sonuçları alıp almadığımızı kontrol ederiz. tanımladığımız modeldir. Bu nedenle, bilinmeyen bir x_data değeri olup olmadığını kontrol ediyoruz, bu durumda 4.0.


new_var = Değişken (torch.Tensor ([[[ 4.0 ] ]))

pred_y = Our_model ( new_var)

print ( "tahmin (eğitimden sonra) " , 4 , bizim_modelimiz ( new_var) .data [ 0 ] [ 0 ])

Tüm adımları doğru bir şekilde takip ettiyseniz, 4.0 girişi için bir değer aşağıda gösterildiği gibi 8.0`a çok yakındır. Bu nedenle, modelimiz temel olarak girdi ve çıktı arasındaki ilişkiyi açık programlama olmadan öğrenir.

predict (eğitimden sonra) 4 7.966438293457031

Başvuru için aşağıdakileri bulabilirsiniz: bu makalenin tüm kodu aşağıdadır:


import meşale

torç.autograd içe aktar Değişken

x_data = Değişken (torch.Tensor ([[ 1.0 ], [ 2.0 ], [ 3.0 ]]))

y_data = V ariable (torch.Tensor ([[ 2.0 ], [ 4.0 ], [ 6.0 ]]))



class LinearRegressionModel (torch.nn.Module):


def __ init __ ( self ):

super (LinearRegressionModel, self ) .__ init __ ()

self . lineer = torch.nn.Linear ( 1 < kod sınıfı = "düz">, 1 ) # Bir giriş ve bir çıktı


def ileri ( self , x):

y_pred = öz . lineer (x)

dönüş y_pred


# bizim modelimiz

bizim_modelimiz = LinearRegressionModel ()

kriter = torch.nn.MSELoss (size_average = False < kod sınıfı = "düz"> )

optimize edici = meşale.optim. SGD (our_model.parameters (), lr = 0.01 )


için çağ aralık ( 500 ):

# İleri geçiş: tahmin edilen y`yi geçerek hesaplayın

# —Ö modeline

pred_y = bizim_modelimiz (x_data)


# Hesapla ve kaybet yazdır

kayıp = < kod sınıfı ="plain "> kriter (pred_y, y_data)


# Sıfır gradyan, geri geçiş,

# ve ağırlığı güncelleyin.

optimizer.zero_grad ()

Los.backward()

optimizer.step ()

yazdır ( `dönem {}, kayıp {}` . biçim (dönem, kayıp.veri [ 0 < kod sınıfı = "düz">]))


new_var = Değişken (torch.Tensor ([[ 4.0 ]]))

pred_y = bizim_modelimiz (yeni_var)

print ( "tahmin (eğitimden sonra)" , 4 , bizim_modelimiz (yeni_var) .data [ 0 ] [ 0 ])

Bağlantılar

Bu makalenin sorunu çözmenize yardımcı olduğunu umuyoruz. PyTorch kullanarak doğrusal regresyon dışında, __del__ ile ilgili diğer konulara bakın.

Python'da başarılı olmak ister misiniz? en iyi Python çevrimiçi kursları 2022 hakkındaki incelememize bakın. Veri Bilimi ile ilgileniyorsanız, R'de programlamayı nasıl öğreneceğinizi de kontrol edin.

Bu arada, bu materyal diğer dillerde de mevcuttur:



Olivia Jackson

Abu Dhabi | 2022-11-29

Kodlama mülakatıma hazırlanıyordum, bunu açıkladığınız için teşekkürler - Python'da PyTorch kullanarak doğrusal regresyon en basit olanı değil. Bunun en iyi yöntem olduğundan tam olarak emin değilim

Jan Danburry

Vigrinia | 2022-11-29

Açıkladığın için teşekkürler! Ben PyTorch kullanarak doğrusal regresyon'a takılıp kalmıştım. birkaç saattir uğraşıyorum, sonunda hallettim 🤗. Geri bildirim ile yarın geri dönecek

Dmitry Nickolson

Massachussetts | 2022-11-29

square her şey biraz kafa karıştırıcı 😭 PyTorch kullanarak doğrusal regresyon karşılaştığım tek sorun değil. Umarım artık ortaya çıkmaz

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

Common xlabel/ylabel for matplotlib subplots

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

12 answers

NUMPYNUMPY

Flake8: Ignore specific warning for entire file

12 answers

NUMPYNUMPY

glob exclude pattern

12 answers

NUMPYNUMPY

How to avoid HTTP error 429 (Too Many Requests) python

12 answers

NUMPYNUMPY

Python CSV error: line contains NULL byte

12 answers

NUMPYNUMPY

csv.Error: iterator should return strings, not bytes

12 answers


Wiki

Python | How to copy data from one Excel sheet to another

Common xlabel/ylabel for matplotlib subplots

Check if one list is a subset of another in Python

sin

How to specify multiple return types using type-hints

exp

Printing words vertically in Python

exp

Python Extract words from a given string

Cyclic redundancy check in Python

Finding mean, median, mode in Python without libraries

cos

Python add suffix / add prefix to strings in a list

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

Python - Move item to the end of the list

Python - Print list vertically