본문 바로가기
반응형

파이토치10

[파이토치] permute 함수란? torch.permute 함수는 텐서의 차원을 재배열하는 함수입니다. 아래와 같은형식으로 사용합니다. torch.permute(텐서,재배열차원) 예를 들어봅시다. 아래와 같은 텐서를 하나 정의하였습니다. x = torch.tensor([[1, 2], [3, 4], [5, 6]]) >>> x tensor([[1, 2], [3, 4], [5, 6]]) permute 함수를 적용하여 0차원을 1차원으로, 1차원을 0차원으로 재배열합니다. >>> torch.permute(x,(1,0)) tensor([[1, 3, 5], [2, 4, 6]]) 2023. 11. 29.
[파이토치] torch.index_select 함수란? torch.index_select 함수는 텐서에서 원하는 인덱스 원소를 선택하는 함수입니다. 아래와 같은 형식으로 입력합니다. torch.index_select(텐서, 차원, 인덱스텐서) 예를 들어봅시다. # 입력 텐서 생성 input_tensor = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 첫 번째 차원(행)에서 인덱스가 0과 2인 행 선택 selected = torch.index_select(input_tensor, dim=0, index=torch.tensor([0, 2])) >>> selected tensor([[1, 2, 3], [7, 8, 9]]) 2023. 11. 29.
파이토치 nn.BCELoss 설명 nn.BCELoss 함수는 binary cross entropy 를 계산해주는 함수입니다. 우리가 예측하고 싶은 target 값을 y, 예측한 값을 x라고놓을 때 binary cross entropy 는 아래와 같이 계산됩니다. $bce=-\left ( y\ln (x)+(1-y)\ln (1-x) \right )$ x와 y를 하나씩 정의하고 메뉴얼하게 bcd 를 구해보면 아래와 같습니다. import torch.nn as nn import torch ln=torch.log x=torch.tensor(0.2) y=torch.tensor(0.9) binary_cross_entropy=-(y*ln(x)+(1-y)*ln(1-x)) >>> binary_cross_entropy tensor(1.4708) 이번에는 n.. 2023. 11. 3.
파이토치 nn.Linear 설명 nn.Linear 은 신경망 은닉층의 한 레이어를 만들어줍니다. 선형함수입니다. 두가지 인자가 입력되는데 하나는 입력텐서의 차원이고 다른 하나는 출력텐서의 차원입니다. 예를 들어 아래와 같은 레이어를 만들었다고 합시다. import torch.nn as nn layer1=nn.Linear(3,1) 입력 텐서는 세개의 차원을 갖습니다. $[x_{1},x_{2},x_{3}]$ 라고 쓰겠습니다. 출력텐서는 하나의 차원을 갖습니다. y라고 쓰겠습니다. 이때 생성된 layer 는 아래와 같은 형태의 선형 함수입니다. $y=w_{1}x_{1}+w_{2}x_{2}+w_{3}x_{3}+b$ b는 bias 입니다. nn.Linear 은 위와 같은 형태의 함수를 정의해줍니다. nn.Linear 에 담겨있는 정보는 weig.. 2023. 11. 3.
파이토치 LeakyReLU 함수 사용하는 방법 ReLU 함수는 0보다 큰 경우에는 y=x 이고 0보다 작은 경우에는 y=ax 인 함수입니다. a를 설정해주어야 합니다. 먼저 모듈들을 불러옵니다. import torch.nn as nn import torch LeakyReLU 함수를 사용하기 위해서는 LeakyReLU 라는 인스턴스를 하나 만들어야 합니다. 기울기 a를 입력해주어야 합니다. 아래와 같이 만듭니다. inplace=True 로 설정해줄 수도 있습니다. 이때는 my_lkrelu 사용 시 my_lkrelu(텐서) 에서 입력된 텐서가 변경됩니다. my_lkrelu=nn.LeakyReLU(0.2) nn.LeakyReLU 라는 클래스를 이용하여 인스턴스를 생성한 것입니다. 이제 텐서를 하나 정의하고 my_lkrelu 를 사용해봅시다. t=torch.. 2023. 11. 2.
파이토치 ReLU 함수 사용하는 방법 ReLU 함수는 0보다 큰 경우에는 y=x 이고 0보다 작은 경우에는 y=0 인 함수입니다. 먼저 모듈들을 불러옵니다. import torch.nn as nn import torch ReLU 함수를 사용하기 위해서는 ReLU 라는 인스턴스를 하나 만들어야 합니다. 아래와 같이 만듭니다. inplace=True 로 설정해줄 수도 있습니다. 이때는 my_relu 사용 시 my_relu(텐서) 에서 입력된 텐서가 변경됩니다. my_relu=nn.ReLU() nn.ReLU 라는 클래스를 이용하여 인스턴스를 생성한 것입니다. 이제 텐서를 하나 정의하고 my_relu 를 사용해봅시다. t=torch.tensor([0.3]) 적용하는 방법은 아래와 같습니다. my_relu 를 아래와 같이 함수처럼 사용할 수 있습니다.. 2023. 11. 1.
파이토치 MNIST 데이터셋 설명 파이토치 내장 데이터셋 중 손글씨 데이터인 MNIST 데이터셋 설명입니다. 파이썬에서 MNIST 데이터를 불러오는 방법은 아래와 같습니다. from torchvision.datasets import MNIST from torchvision.transforms import ToTensor training_data=MNIST(root="./",train=True,download=True,transform=ToTensor()) test_data=MNIST(root="./",train=False,download=True,transform=ToTensor()) "./"는 현재 디렉토리를 의미합니다. 현재 디렉토리에 폴더가 하나 생성되고 데이터가 다운로드 됩니다. train을 True 로 설정하면 train 데이터.. 2023. 11. 1.
[파이토치] 원-핫 인코딩 하는 법 (one-hot encoding) 원-핫 이란? 0과 1로만 이루어진 어떤 집합이 있을 때 하나의 원소만 1이고 나머지는 0인 경우를 원-핫 이라고 합니다. 원-핫 인코딩이란? 어떤 데이터를 원-핫 데이터로 만드는 것을 원-핫 인코딩이라고 부릅니다. 0,1,2,3,4 라는 다섯개의 레이블로 분류된 어떤 데이터가 있다고 합시다. 이때 레이블을 원-핫으로 바꾸는 것을 원-핫 인코딩이라고 합니다. 0,1,2,3,4 를 아래와 같이 바꾸는 것입니다. 0 -> [1,0,0,0,0] 1 -> [0,1,0,0,0] 2 -> [0,0,1,0,0] 3 -> [0,0,0,1,0] 4 -> [0,0,0,0,1] 파이토치에서 원-핫 인코딩 하는 법 아래 코드와 주석으로 설명하겠습니다. #파이토치를 불러옵니다 import torch #어떤 데이터의 레이블이 아.. 2023. 10. 29.
[파이토치] 텐서 만드는 방법 코드는 아래와 같습니다. 각 코드에 대한 설명은 주석에 자세히 달아놓았습니다. #파이토치를 불러옵니다 import torch #텐서를 직접 정의해봅시다. torch.tensor( ) 클래스에 리스트 형태로 배열을 입력하면 됩니다. #텐서를 벡터 형태로 정의해봅시다. t1=torch.tensor([1,2,3]) #선언된 결과는 아래와 같습니다. >>> t1 tensor([1, 2, 3]) #텐서를 행렬 형태로 선언해봅시다. t2=torch.tensor([[1,2,3],[1,2,3]]) #선언된 결과는 아래와 같습니다. >>> t2 tensor([[1, 2, 3], [1, 2, 3]]) 2023. 10. 29.
[파이토치] MNIST 분류예제 딥러닝 파이토치를 이용하여 MNIST 를 분류하는 예제입니다. 자세한 설명을 주석에 적어놓았습니다. import matplotlib.pyplot as plt from torchvision.datasets.mnist import MNIST from torchvision.transforms import ToTensor from torch.utils.data.dataloader import DataLoader import torch import torch.nn as nn from torch.optim.adam import Adam #MNIST 손글씨 데이터를 불러옵니다. transform 을 통해 텐서 데이터로 바꿔줍니다. #train 과 test 데이터 중 어떤 데이터를 불러올지는 train 옵션으로 설정합니다. .. 2023. 10. 27.
반응형