PyTorchを使用した線形回帰

| | | | | | | | |

まず、Python環境にPyTorchをインストールする必要があります。これを行う最も簡単な方法は—です。 pipまたはcondaツールを使用します。 pytorch.org にアクセスし、使用するPythonインタープリターとパッケージマネージャーのバージョンをインストールします。


#このPythonコードをJupyterノートブックで実行できます
#正しいバージョンを自動的にインストールします
#PyTorch。


http://pytorch.org / from os import path

from Wheel.pep425tags import get_abbr_impl、get_impl_ver、get_abi_tag

プラットフォーム = `{} {}-{}` format (get_abbr_impl()、get_impl_ver()、get_abi_tag())

アクセラレータ = `cu80` if path.exists( `/ opt / bin / nvidia-smi` else `cpu`


! pip install - q http: / / download.pytorch.org / whl / {accelerator} / トーチ- 0.3 0.post4 - {platform} - linux_x86_64.whl torchvision

PyTorchをインストールしたら、今すぐ始めましょうコードを見てください。
必要なライブラリ関数とオブジェクトをインポートするには、以下の2行を記述してください。


import torch

from torch.autograd import 変数

また、いくつかのデータを定義し、それを変数 x_datay_data次のように:


x_data = 変数(torch.Tensor([[ 1.0 ]、[ 2.0 ]、 [ 3.0 ]]))

y_data = Variable(torch.Tensor([[ 2.0 ]、[ 4.0 ]、[ 6.0 ]]))

ここにx_data& #8212;独立変数、および y_data —従属変数。これが今のところ私たちのデータセットになります。次に、モデルを定義する必要があります。モデルの定義には、主に2つのステップがあります。それらは次のとおりです。

  1. モデルを初期化します。
  2. フォワードパスを宣言します。
  3. 以下のクラスを使用します:

    class LinearRegressionModel(torch.nn.Module):


    def __ init __( self ):

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

    self 。線形 = torch.nn.Linear( 1 1 #1つの入力と1つの出口


    def forward( self 、x):

    y_pred = 自己。線形(x)

    return y_pred

    ご覧のとおり、 Modelクラスはtorch.nn.moduleのサブクラスです。さらに、ここでは入力と出力が1つしかないため、入力と出力のサイズが1の線形モデルを使用します。

    次に、このモデルのオブジェクトを作成します。

    #モデル

    our_model = LinearRegressionModel()

    その後、オプティマイザーを選択し、損失基準。ここでは、損失関数として平均二乗誤差(MSE)を使用し、オプティマイザーとして確率的勾配降下法(SGD)を使用します。また、学習率を任意に0.01に固定します。


    <コードクラス="プレーン">基準<コードクラス="キーワード">=<コードクラス="プレーン">torch.nn.MSELoss(size_average = False

    オプティマイザー = torch.optim.SGD(our_model.parameters()、lr = 0.01

    これで、学習段階になりました。トレーニング中に次のタスクを500回実行します。

    1. データを渡し、予測されたy値を計算することにより、ライブ転送を実行します。
    2. MSEを使用して損失を計算します。
    3. すべてのグラデーションを0にリセットし、逆伝播してから重みを更新します。

    4. for エポック in 範囲 500 ):


      #フォワードパス:

      #xからモデルへ

      pred_y = our_model(x_data)


      #計算して印刷を失う

      損失 = 基準(pred_y、y_data)


      #ゼロ勾配、バックトラック

      #そして重みを更新します。

      optimizer.zero_grad()

      loss.backward()

      optimizer.step()

      print `epoch {}、loss {}` フォーマット(epoch、loss.data [ 0 ]))

      トレーニングを完了した後、定義したモデル。そのため、不明な x_data 値、この場合は4.0をチェックします。


      new_var = Variable(torch.Tensor([[[ 4.0 ]]))

      pred_y = our_model(new_var)

      print "predict(トレーニング後)" 4 、our_model( new_var).data [ 0 ] [ 0 ])

      すべての手順を正しく実行すると、エントリ4.0で次のように表示されます。以下に示すように、値は8.0に非常に近い値です。したがって、このモデルは基本的に、明示的なプログラミングなしで入力と出力の関係を学習します。

      予測(トレーニング後)4 7.966438293457031

      参考として、以下のこの記事のすべてのコード:


      import torch

      from torch.autograd import 変数

      x_data = Variable(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 。線形 = torch.nn.Linear( 1 1 #1つの入力と1つの出力


      def forward( self 、x):

      y_pred = 自己。線形(x)

      return y_pred


      #モデル

      our_model = LinearRegressionModel()

      基準 = torch.nn.MSELoss(size_average = False

      オプティマイザー = torch.optim。 SGD(our_model.parameters()、lr = 0.01


      for エポック in range 500 ):

      #フォワードパス:パスして予測yを計算します

      #—モデルへのÖ

      pred_y = our_model(x_data)


      #計算して印刷を失う

      損失 = 基準(pred_y、y_data)


      #ゼロ勾配、バックパス、

      #そして重みを更新します。

      optimizer.zero_grad()

      loss.backward()

      optimizer.step()

      印刷 `エポック{}、損失{}` format (epoch、loss.data [ 0 ]))


      new_var = Variable(torch.Tensor([[ 4.0 ]])) < / p>

      pred_y = our_model(new_var)

      print "predict(トレーニング後)" 4 、our_model(new_var).data [ 0 ] [ 0 ])

      リンク

      この記事が問題の解決に役立つことを願っています。 PyTorchを使用した線形回帰 とは別に、他の __del__ 関連のトピックを確認してください。

      Python で上達したいですか?  最高の Python オンライン コース 2022 のレビューをご覧ください。 データ サイエンスに興味がある場合は、R でプログラミングを学ぶ方法も確認してください。

      ちなみに、この資料は他の言語でも利用できます:



      Dmitry Galleotti

      Boston | 2022-11-29

      私はコーディングの面接の準備をしていました、これを明確にしてくれてありがとう - PythonのPyTorchを使用した線形回帰は最も単純なものではありません. それが最良の方法であるかどうかはわかりません

      Dmitry Robinson

      Tallinn | 2022-11-29

      シンプルにまとめられていて分かりやすい。シェアしてくださってありがとうございます。PyTorchを使用した線形回帰や__dict__の問題はいつも私の弱点でした😁。. 昨日確認したところ、動作しています!

      Frank Richtgofen

      Massachussetts | 2022-11-29

      もしかしたら、別の答えがあるのかも?何 PyTorchを使用した線形回帰 はどういう意味ですか?. それが最良の方法であるかどうかはわかりません

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