728x90
반응형

pytorch 20

[pytorch] 합성곱층 - Filter(stride / padding)

이 그림은 필터가 한 개인 경우의 계산이다. 위 그림에서는 이해를 돕기 위해 2차원으로 표현했지만 일반적으로 filter는 3차원이며 CNN에서는 3차원 filter 여러 개를 개별 feature map 에 적용하는 방식이다. 그럼 필터가 두 개 이상인 합성곱은 어떤 형태일까? convolution 연산을 적용할 filter의 채널 수 는 입력 feature map의 채널수와 같아야 한다. -> 3 convolution 연산을 적용한 filter의 개수는 출력 feature ma의 채널수가 됨 -> 4 입력 이미지가 3차원 -> 피처맵도 3차원 컨볼루션 적용 시 출력 피처맵의 크기 계산 공식 1. input size = 5*5, filter = 3*3, Strides = 1, padding = 0 인 경..

pytorch 2023.04.09

[pytorch] CNN (합성곱 신경망)의 구조

합성곱 신경망(Convolutional Neural Network, CNN)은 이미지, 음성, 텍스트 등과 같은 다양한 유형의 데이터에서 특징을 추출하고 분류하는 데 사용되는 딥러닝 모델 중 하나입니다. CNN은 기본적으로 이미지 처리에서 주로 사용되며, 입력 데이터를 이미지의 픽셀로 구성된 2D 배열로 취급합니다. 합성곱 계층과 풀링 계층으로 구성되며, 합성곱 계층(convolutional layer)은 입력 이미지에서 특징을 추출하는데 사용되고, 풀링 계층(pooling layer)은 추출된 특징을 간소화하고, 데이터의 크기를 줄입니다. 이러한 합성곱 계층과 풀링 계층의 반복적인 구성으로 인해 CNN은 입력 데이터에서 다양한 수준의 추상화된 특징을 학습하여, 이러한 특징을 바탕으로 입력 이미지를 분류..

pytorch 2023.04.09

[pytorch] Dropout

과적합(over-fitting)은 train 데이터를 과하게 학습해서 발생합니다. 일반적으로 train 데이터는 실제 데이터의 일부분입니다. 따라서 train 데이터를 과하게 학습했기 때문에 예측 값과 실제 값 차이인 오차가 감소하지만, 검증 데이터에 대해서는 오차가 증가할 수 있습니다. 즉, 과적합은 훈련 데이터에 대해 과하게 학습하여 실제 데이터에 대한 오차가 증가하는 현상을 의미합니다. 과적합을 해결하는 방법으로 드롭아웃이 있습니다. dropout : 신경망 모델이 과적합되는 것을 피하기 위한 방법으로, 학습 과정 중 임의로 일부 노드를 학습에서 제외시킵니다. class DropoutModel(torch.nn.Module): def __init__(self): super(DropoutModel,se..

pytorch 2023.04.06

[pytorch] 3. 모델 학습 (파이토치 학습 절차)

모델을 학습을 시킨다는 것은 y = wx + b 라는 함수에서 w와 b의 적절한 값을 찾는다는 것을 의미합니다. w와 b에 임의의 값을 적용하여 시작하여 오차가 줄어들어 전역 최소점에 이를 때까지 파라미터 (w,b)를 계속 수정합니다. 가장 먼저 필요한 절차가 optimizer.zero_grad() 함수를 이용하여 기울기를 초기화하는 것입니다. 파이토치는 기울기 값을 계산하기 위해 loss.backward() 함수를 이용하는데, 이것을 사용하면 새로운 기울기 값이 이전 기울기 값에 누적하여 계산됩니다. 이 방법은 순환신경망(RNN) 모델을 구현할 때 효과적이지만 누적 계산이 필요하지 않는 모델에 대해서는 불필요합니다. 따라서 기울기 값에 대해 누적 계산이 필요하지 않을 때는 입력 값을 모델에 적용하기 전..

pytorch 2023.04.05

[pytorch] 2. 모델 파라미터(손실 함수/ 옵티마이저 / 학습률 스케줄러)

모델을 학습하기 전, 필요한 파라미터들을 정의합니다. 파라미터는 다음과 같습니다. 손실 함수(loss function) : 학습하는 동안 예측값과 실제값의 오차를 구합니다. BCELoss : 이진 분류를 위해 사용 CrossEntropyLoss : 다중 클래스 분류를 위해 사용 MSELoss : 회귀 모델에서 사용 옵티마이저(optimizer) : 데이터와 손실 함수를 바탕으로 모델의 업데이트 방법을 결정합니다. optimizer는 step() 함수를 통해 전달받은 파라미터를 업데이트 함 모델의 파라미터별로 다른 기준(ex.학습률)을 적용시킬 수 있음 torch.optim.Optimizer(params, defaults)는 모든 옵티마이저의 기본이 되는 클래스임 zero_grad() 함수는 옵티마이저에 ..

pytorch 2023.04.04

[pytorch] 1. 모델 정의 (nn.Module / nn.Sequential)

파이토치에서 모델을 정의하기 위해서는 모듈을 상속한 클래스를 사용합니다. 계층(Layer) : 모듈 또는 모듈을 구성하는 한 개의 계층 (합성곱층 convolutional layer, 선형계층 Linear layer) 모듈(module) : 한 개 이상의 계층이 모여서 구성된 것. 모듈이 모여 새로운 모듈을 만들 수도 있습니다. 모델(model) : 최종적으로 원하는 네트워크로, 한 개의 모듈이 모델이 될 수도 있습니다. 1. nn.Module을 상속받지 않고 정의하는 방법 매우 단순한 모델을 만들 때 사용합니다. 구현이 쉽고 단순하다는 장점이 있습니다. model = nn.Linear(in_features = 1, out_features = 1, bias = True) 2. nn.Module을 상속하여..

pytorch 2023.03.22

[pytorch] tensor(텐서) 생성/이해/조작

텐서는 파이토치에서 가장 기본이 되는 데이터 구조이다. 넘파이의 ndarray와 비슷하며 GPU에서의 연산도 가능하다. 1. 텐서(tensor) 생성 import torch print(torch.tensor([[1,2],[3,4]])) # 2차원 형태의 텐서 생성 print(torch.tensor([[1,2],[3,4]], device = "cuda:0")) # GPU에 텐서 생성 print(torch.tensor([[1,2],[3,4]], dtype = torch.float64))# dtype을 이용하여 텐서 생성 2. 텐서를 ndarray로 변환 temp = torch.tensor([[1,2],[3,4]]) temp.numpy() # 텐서를 ndarray로 변환 temp.to("cpu").numpy(..

pytorch 2023.03.19

[pytorch] pytorch 특징 / pytorch 아키텍처 / pytorch 장점 / pytorch API 종류

1. 파이토치 개요 파이토치(pytorch)는 딥러닝 프레임워크로 토치를 페이스북에서 파이썬 버전으로 내놓은 것이다. 토치는 파이썬의 넘파이 라이브러리처럼 과학 연산을 위한 라이브러리로 공개되었지만 이후 발전을 거듭하면서 딥러닝 프레임워크로 발전했다. 파이토치를 사용하는 대상 1. 넘파이를 대체하면서 CPU를 이용한 연산이 필요한 경우 2. 최대한의 유연성과 속도를 제공하는 딥러닝 연구 플랫폼이 필요한 경우 2. 파이토치의 특징 파이토치란? "GPU에서 텐서 조작 및 동적 신경망 구축이 가능한 프레임워크" GPU : 연산 속도를 빠르게 하는 역할을 한다. 딥러닝에서는 기울기를 계산할 때 미분을 사용하는데, GPU를 사용하면 빠른 계산이 가능하다. 내부적으로 CUDA, cuDNN이라는 API를 통해 GPU..

pytorch 2023.03.14

[pytorch] 딥러닝 학습 순서 / 딥러닝의 종류

1. 딥러닝이란? 딥러닝은 인간의 신경망 원리를 모방한 심층 신경망 이론을 기반으로 고안된 머신러닝의 일종이다. 즉, 딥러닝이 머신러닝과 다른 큰 차이점은 인간의 뇌를 기초로 하여 설계했다는 것이다. 인간의 뇌가 엄청난 수의 뉴런과 시냅스로 구성되어 있는 것에 착안하여 컴퓨터에 뉴런과 시냅스 개념을 적용했다. 각각의 뉴런은 복잡하게 연결된 수많은 뉴런을 병렬 연산하여 기존에 컴퓨터가 수행하지 못했던 음성, 영상인식 등 처리를 가능하게 한다. 2. 딥러닝 학습 순서 모델 정의 : 신경망을 생성한다. 일반적으로 은닉층 개수가 많을수록 성능이 좋아지지만 과적합이 발생할 확률이 높다. 즉, 은닉층 개수에 따른 성능과 과적합은 서로 상충 관계에 있다. 신경망을 제대로 생성하는 것이 중요하다. 모델 컴파일 : 활성..

pytorch 2023.03.12

[pytorch] 머신러닝 딥러닝의 차이 / 머신러닝 학습 순서

1. 인공지능, 머신러닝과 딥러닝의 차이 인공지능(Artificial Intelligence)은 인간의 지능적 행동을 모방하거나 재현하는 컴퓨터 시스템을 말합니다. 머신러닝은 인공지능의 한 분야로, 데이터를 통해 스스로 학습하고, 예측하거나 결정을 내릴 수 있는 알고리즘과 기술의 개발을 목표로 합니다. 이는 데이터로부터 패턴을 발견하고, 이를 바탕으로 예측 또는 결정을 내리는 모델을 만드는 과정을 포함합니다. 딥러닝은 머신러닝의 하위 분야로, 주로 인공신경망(특히 깊은 신경망)을 사용하여 복잡한 문제를 해결합니다. 딥러닝은 대규모 데이터에서 고수준의 추상화와 패턴 인식을 수행하는 능력을 가지고 있습니다. 머신러닝과 딥러닝 모두 학습 모델을 제공하여 데이터를 분류할 수 있는 기술이다. 하지만 접근 방식에 ..

pytorch 2023.03.12
728x90
반응형