본문 바로가기

딥러닝/파이토치 딥러닝13

6장 경사하강법 1. 미분, 편미분 편미분: 하나의 입력 변수에 대해서만 미분 gradient : 기울기 벡터 선형계층 미분: m차원의 벡터를 출력으로 갖는 함수 f를 n차원의 벡터 x로 미분하는 경우 2. 경사하강법 경사하강법(gradient descent): 손실함수의 출력을 최소로 만드는 입력을 찾기 위한 방법 -> 손실 함수의 출력값을 낮추기 위해 가중치 파라미터로 미분하여 얻은 그래디언트를 학습률과 곱해서 현재 가중치 파라미터에서 빼줌 ->그래디언트와 반대방향으로! 경사하강법은 지역 최소점(local minima)에 빠질 문제점이 존재하지만, 심층신경망은 가중치 파라미터의 크기가 매우 커지게 되는데, 높은 차원의 공간에서는 지역 최소점이 큰 문제가 되지는 않음. 학습률은 하이퍼파라미터로서, 잘 설정해주어야 한다.. 2024. 4. 22.
5장. 손실함수 1. 손실함수 N개의 데이터 샘플, n차원 L1 L2 : Euclidean distance RMSE MSE MSE는 L2 노름의 제곱에 상수를 곱한 2. 실습 def mse(x_hat, x): # |x|=(batch_size, dim) print((x-x_hat)**2) y=((x-x_hat)**2).mean() return y x=torch.FloatTensor([[1,1],[2,2]]) x_hat=torch.FloatTensor([[0,0],[0,0]]) print(mse(x_hat,x)) #2.5 torch.nn.function 사용 import torch.nn.functional as F F.mse_loss(x_hat,x) #2.5 F.mse_loss(x_hat,x, reduction='sum').. 2024. 4. 10.
4장. 선형계층 선형계층은 행렬의 곱과 벡터의 덧셈으로 이루어짐! 1. 행렬곱(matmul) x=torch.FloatTensor([[1,2],[3,4],[5,6]]) y=torch.FloatTensor([[1,2],[1,2]]) z=torch.matmul(x,y) print(z) print(z.size()) // 3x2 2. 배치행렬곱(bmm) bmm은 마지막 2개의 차원을 행렬 취급하여 병렬로 행렬 곱 연산 수행 x=torch.FloatTensor(3,3,2) y=torch.FloatTensor(3,2,3) z=torch.bmm(x,y) print(z.size()) #3x3x3 3. 선형계층 W=torch.FloatTensor([[1,2],[3,4],[5,6]]) b=torch.FloatTensor([2,2]) def.. 2024. 4. 10.
3장 파이토치 튜토리얼 텐서: 딥러닝에서 가장 기본이 되는 단위 중 하나(3차원 이상의 배열)1. numpy 호환 1. numpy tensor import torch import numpy as np x=np.array([[1,2],[3,4]]) y=torch.from_numpy(x) x=y.numpy() 2. 텐서크기 구하기 x=torch.FloatTensor([[[1,2],[3,4]],[[5,6],[7,8]],[[9,10],[11,12]]]) print(x.size()) #torch.Size([3, 2, 2]) print(x.shape) #torch.Size([3, 2, 2]) print(x.size(-1)) #2 print(x.shape[-1]) #2 # dimension print(x.dim()) #3 print(len.. 2024. 4. 4.