Linear regression
学習目標
線形回帰を理解します.
コアキー
せんけいかいき
へいきんにじゅうごさ
けいしゃこうかほう
テーマ
データ定義:学習データ(torch.tenser)
Hypothesis:学習する関数を実現する
Compute Loss:損失の計算
勾配降下こうばいこうばい:連続モデルの改良れんぞくもでるのこうか
初期設定
! pip install torchvision
import numpy as np
import torch
Data definitionx_train = torch.FloatTensor([[1], [2], [3]])#입력
y_train = torch.FloatTensor([[2], [4], [6]])#출력
Hypothesis(model)
Liner Regressionは、学習データと最も一致する直線を1つの直線で検索します.
#Weight와 Bias 0으로 초기화(항상 출력0예측)
W = torch.zeros(1, requires_grad = True) #학습할 것 명시
b = torch.zeros(1, requires_grad = True) #학습할 것 명시
hypothesis = x_train * W + b
Compute Loss(モデル学習)
Mean Squared Error(MSE)
正解からどれほど近いかを確認することで損失を計算する
平均値に実際のトレーニングデータセットを乗じたy値の違い
cost = torch.mean((hypothesis - y_train) ** 2)
Gradient descent
torch.Optimライブラリの使用
いつもくっついている3行(必ず覚えておいてください)
optimizer = torch.optim.SGD([W, b], lr=0.01)
optimizer.zero_grad()
cost.backward()
optimizer.step()
Full training code(Linear regression)
! pip install torchvision
import numpy as np
import torch
#데이터 정의
x_train = torch.FloatTensor([[1], [2], [3]])
y_train = torch.FloatTensor([[2], [4], [6]])
# Hypothesis초기화
W = torch.zeros(1, requires_grad = True)
b = torch.zeros(1, requires_grad = True)
#Optimizer정의
optimizer = torch.optim.SGD([W, b], lr = 0.01)
#Hypothesis 예측
nb_epochs = 1000
for epoch in range(1, nb_epochs + 1):
hypothesis = x_train * W + b
cost = torch.mean((hypothesis - y_train) ** 2)
optimizer.zero_grad()
cost.backward() #cost계산
optimizer.step() #Optimizer로 학습
Reference
この問題について(Linear regression), 我々は、より多くの情報をここで見つけました https://velog.io/@qsdcfd/Linear-regressionテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol