[PYTHON] Essayez d'implémenter la régression linéaire à l'aide de Pytorch avec Google Colaboratory

Pour les débutants! On suppose que vous avez une connaissance de base de l'apprentissage profond. Implémentons la régression linéaire à l'aide de Pytorch, une bibliothèque d'apprentissage automatique. C'est facile, c'est donc une excellente introduction à l'apprentissage automatique.

Qu'est-ce que Pytorch?

Une bibliothèque d'apprentissage automatique open source pour Python qui a été initialement développée par le groupe de recherche sur l'intelligence artificielle de Facebook. La lecture est une torche à tarte.

Il est devenu populaire ces dernières années parmi les bibliothèques de Deep Learning. Il est recommandé car il est très facile à décrire.

Qu'est-ce que Google Colaboratory?

C'est un environnement d'exécution python qui peut être utilisé gratuitement fourni par Google.

Le GPU peut également être utilisé et les bibliothèques requises pour l'apprentissage automatique sont préinstallées. Il est difficile de créer un environnement d'apprentissage automatique localement, donc cette fois j'utiliserai Google Colaboratory.

Voir ci-dessous pour savoir comment l'utiliser. Vous pourrez l'utiliser en 1 minute environ. https://qiita.com/shoji9x9/items/0ff0f6f603df18d631ab

Essayez de mettre en œuvre une régression linéaire

Installez les bibliothèques requises.

import torch
from torch import nn
import matplotlib.pyplot as plt
import numpy as np

Créons un modèle de distribution aléatoire et tracons-le. Régression linéaire sur cette figure.

x = torch.randn(100, 1) * 10
y = x + torch.randn(100, 1) * 3
plt.plot(x.numpy(), y.numpy(), "o")
plt.ylabel("y")
plt.xlabel("x")

Lorsque je l'exécute, je pense que la figure suivante est sortie. pytorch-liniear-regression01.png

Définit un modèle de régression linéaire. Il hérite de nn.Module et définit un modèle dans init qui spécifie la taille des entrées et des sorties.

class LR(nn.Module):
  def __init__(self, input_size, output_size):
    super().__init__()
    self.linear = nn.Linear(input_size, output_size)
  def forward(self, x):
    pred = self.linear(x)
    return pred

Fixez la graine du nombre aléatoire. Créez une instance du modèle de régression linéaire.

torch.manual_seed(1)
model = LR(1, 1)

Définissez une fonction qui récupère les paramètres du modèle.

[w, b] = model.parameters()
def get_params():
  return (w[0][0].item(), b[0].item())

Définissez la fonction à tracer. L'extraction des paramètres du modèle définit y1.

def plot_fit(title):
  plt_title = title
  w1, b1 = get_params()
  x1 = np.array([-30, 30])
  y1 = w1*x1 + b1
  plt.plot(x1, y1, "r")
  plt.scatter(x, y)
  plt.show()

Tracons le chiffre avant d'apprendre. Vous pouvez voir que la ligne rouge est éteinte car c'est avant l'apprentissage.

plot_fit("initial Model")

pytorch-liniear-regression02.png

Il est maintenant temps de se préparer à apprendre. La fonction de perte est définie comme l'erreur quadratique moyenne, et la méthode d'apprentissage est définie comme la méthode de descente de gradient stochastique. Le taux d'apprentissage est de 0,01.

criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr = 0.01)

Apprenons! L'époque est fixée à 100. Enregistrez la perte.

epochs = 100
losses = []
for i in range(epochs):
  y_pred = model.forward(x)
  loss = criterion(y_pred, y)
  print("epoch:", i, "loss:", loss.item())
  
  losses.append(loss)
  optimizer.zero_grad()
  loss.backward()
  optimizer.step()

Jetons un coup d'œil au processus d'apprentissage.

plt.plot(range(epochs), losses)
plt.ylabel("Loss")
plt.xlabel("epoch")

pytorch-liniear-regression03.png

Vous pouvez voir que vous apprenez. Tracons le chiffre après l'entraînement.

plot_fit("Trained Model")

pytorch-liniear-regression04.png

Vous pouvez voir que vous apprenez correctement.

c'est tout. Je vous remercie pour votre travail acharné!

J'ai essayé d'apprendre la régression linéaire en utilisant pytorch. Pytorch et Google Colaboratory facilitent l'expérience de l'apprentissage automatique, alors essayez-le! !!

Recommended Posts

Essayez d'implémenter la régression linéaire à l'aide de Pytorch avec Google Colaboratory
Essayez de déduire à l'aide d'un modèle de régression linéaire sur Android [PyTorch Mobile]
Comment analyser avec Google Colaboratory à l'aide de l'API Kaggle
Essayez d'utiliser Python avec Google Cloud Functions
Comment rechercher Google Drive dans Google Colaboratory
J'ai essayé d'implémenter CVAE avec PyTorch
Utilisation du noyau Jupyter de Java avec Google Colaboratory
J'ai essayé d'implémenter la lecture de Dataset avec PyTorch
Télécharger des fichiers directement sur Google Drive (à l'aide de Google Colaboratory)
Régression linéaire avec statsmodels
Essayez d'implémenter yolact
Régression avec un modèle linéaire
Essayez la régression avec TensorFlow
J'ai essayé d'implémenter et d'apprendre DCGAN avec PyTorch
Comment charger des fichiers dans Google Drive avec Google Colaboratory
Essayez de créer une API RESTful avec MVC à l'aide de Flask 1.0.2
J'ai essayé d'implémenter SSD avec PyTorch maintenant (Dataset)
Créer un environnement pour utiliser CaboCha avec Google Colaboratory
Comment analyser avec Google Colaboratory à l'aide de l'API Kaggle
Réglage du site d'administration de Django
Essayez de défier le sol par récursif
Essayez d'utiliser PythonTex avec Texpad.
Essayez Google Mock avec C
Essayez StyleGAN avec Google Colaboratory
Essayez d'utiliser matplotlib avec PyCharm
Essayez Auto Encoder avec Pytorch
Étudiez Python avec Google Colaboratory
Essayez d'implémenter XOR avec PyTorch
Implémenter le GPU PyTorch + avec Docker
Méthode de régression linéaire utilisant Numpy
Essayez de juger des photos de plats à l'aide de l'API Google Cloud Vision
[Python] Régression linéaire avec scicit-learn
J'ai essayé d'implémenter SSD avec PyTorch maintenant (édition du modèle)
Comment utiliser Google Colaboratory
Régression linéaire robuste avec scikit-learn
Comment afficher des formules en latex lors de l'utilisation de Sympy (> = 1.4) dans Google Colaboratory
Comment utiliser Google Colaboratory et exemple d'utilisation (PyTorch × DCGAN)
J'ai essayé d'implémenter la classification des phrases par Self Attention avec PyTorch
Essayez d'afficher la carte google et la carte géographique avec python
Introduction à la modélisation statistique bayésienne avec python ~ Essai de régression linéaire avec MCMC ~
Introduction au Deep Learning (2) - Essayez votre propre régression non linéaire avec Chainer-
Mémo d'auto-apprentissage "Deep Learning from scratch" (n ° 13) Essayez d'utiliser Google Colaboratory
[Statistiques] [R] Essayez d'utiliser la régression par points de division.
Les débutants en apprentissage automatique essaient la régression linéaire
Essayez de profiler avec ONNX Runtime
Essayez d'utiliser pynag pour configurer Nagios
Régression linéaire avec distribution t de Student
Comment augmenter les données avec PyTorch
Essayez d'obtenir des statistiques en utilisant e-Stat
Détection des fonctionnalités OpenCV avec Google Colaboratory
Essayez de produire de l'audio avec M5 STACK
Essayez d'utiliser le networkx de Python avec AtCoder
Prédiction des ondes de Sin (retour) avec Pytorch
Comment gérer l'erreur OAuth2 lors de l'utilisation des API Google à partir de Python
(Apprentissage automatique) J'ai essayé de comprendre attentivement la régression linéaire bayésienne avec l'implémentation
Prédire FX avec LSTM à l'aide de Keras + Tensorflow Partie 2 (Calculer avec GPU)
Essayez de piquer la base de données sur IBM i avec python + JDBC à l'aide de JayDeBeApi
Essayez de reproduire un film couleur avec Python
Essayez de vous connecter à qiita avec Python
J'ai essayé d'implémenter Autoencoder avec TensorFlow
[Débutant] Scrapage Web Python facile à comprendre à l'aide de Google Colaboratory