일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Pytorch로 시작하는 딥러닝 입문
- mnist
- pytorch visdom
- 로보틱스입문
- NUCLEO board
- pytorch
- visdom
- Introduction to Robotics: Mechanics and Control by John J Craig
- nucleo-f401re
- RobotArm
- 로보틱스 입문
- 6자유도 로봇팔
- dynamixel
- Numpy
- DeepLearning
- 6dof
- Robotics
- 딥러닝
- boostcourse
- regression
- DH parameter
- Python
- IMU sensor
- 6축 다관절
- Robot arm
- 파이토치
- softmax
- PUMA 560
- custom cnn
- 파이토치로 시작하는 딥러닝 기초
- Today
- Total
슬.공.생
BoostCourse(DL)(week2)-Sequential model(class) 본문
BoostCourse(DL)(week2)-Sequential model(class)
AGT (goh9510@naver.com) 2022. 8. 1. 22:04본 포스팅은 부스트 코스의 [ 파이토치로 시작하는 딥러닝 기초 ] 와 [ Pytorch로 시작하는 딥러닝 입문 ] 의 내용을 통해 학습한 내용입니다.
파이토치로 시작하는 딥러닝 기초
부스트코스 무료 강의
www.boostcourse.org
PyTorch로 시작하는 딥 러닝 입문
이 책은 딥 러닝 프레임워크 PyTorch를 사용하여 딥 러닝에 입문하는 것을 목표로 합니다. 이 책은 2019년에 작성된 책으로 비영리적 목적으로 작성되어 출판 ...
wikidocs.net
딥러닝의 입력이 다양한 경우, 일반적으로는 model을 선언할 시 class 를 사용하여 model을 구성하게된다.
앞서 선형 회귀의 경우에서 class를 이용하여 model을 선언하였었다.
로지스틱 회귀의 경우도 선형회귀와 마찬가지로 다중 입력을 받을경우 class로 선언이 가능하다.
로지스틱 회귀에는 위의 hypothesis가 사용되는데 이때 linear 식을 sigmoid 함수의 입력으로써 사용하게 된다.
따라서 로지스틱 회귀에 사용되는 class는 아래와 같이 순차적인 구조를 가지게된다.
W = torch.zeros((2, 1), requires_grad=True)
b = torch.zeros((1), requires_grad=True)
class LogisticRegressionModel(nn.Module):
def __init__(self):
super().__init__()
self.linear = nn.Linear(2, 1)
self.sigmoid = nn.Sigmoid()
def forward(self, x):
return self.sigmoid(self.linear(x))
이와 같이 선형함수가 sigmoid 함수의 입력으로 들어가게 된다.
이것 외에도 class로 model을 선언하는 경우에 model.을 통해 객체에 접근하는 것으로 코드를 좀더 간단하게 만들 수 있다.
model = LogisticRegressionModel()
optimizer = optim.SGD(model.parameters(), lr = 1)
#optimizer = optim.SGD([W, b], lr = 1)
optimizer에 Weights 와 bias를 전달할 때 model 객체로부터 바로 값을 가져오게 된다. list(model.parameters())를 통해 출력할 수 있다.
hypothesis 또한 간단하게 표현할 수 있다.
로지스틱 회귀의 cost함수의경우 cross_entropy 함수를 사용하고 import torch.nn.functional as F 을 통해 cost함수를 간단하게 표현할 수 있다.
nb_epochs = 1000
for epoch in range(nb_epochs+1):
# hypothesis = 1 / (1 + torch.exp(-(x_train.matmul(W) + b)))
hypothesis = model(x_train)
# cost = -( (y_train)*torch.log(hypothesis) +
# (1 - y_train)*torch.log(1 - hypothesis)).mean()
cost = F.binary_cross_entropy(hypothesis, y_train)
optimizer.zero_grad()
cost.backward()
optimizer.step()
'study > DeepLearning' 카테고리의 다른 글
BoostCourse(DL)(week2)-Softmax Regression_2 (0) | 2022.08.02 |
---|---|
BoostCourse(DL)(week2)-Softmax Regression_1 (0) | 2022.08.02 |
BoostCourse(DL)(week2)-Logistic Regression (0) | 2022.08.01 |
BoostCourse(DL)(week1)-Mini Batch Gradient Descent (0) | 2022.07.30 |
BoostCourse(DL)(week1)-class 기반 모델 구현(보충) (0) | 2022.07.30 |