본문 바로가기

Data_Analysis_Track_33/Python

(63)
Python_Deeplearning_pytorch_09(VGGNet Pretrained 모델을 이용해 이미지 분류) Pretrained Model 다른 목적을 위해 미리 학습된 모델. Pretrained model을 현재 해결하려는 문제에 이용한다. 대부분 내가 만들려는 네트워크 모델에 pretrained model을 포함시켜 사용한다. - 이런 방식을 Transfer Learning (전이 학습)이라고 한다. - 보통 Feature Extractor block을 재사용한다. Pytorch에서 제공하는 Pretrained Model 분야별 라이브러리에서 제공 - torchvision: https://pytorch.org/vision/stable/models.html torch hub 를 이용해 모델과 학습된 parameter를 사용할 수 있다. - https://pytorch.org/hub/ 이외에도 많은 모델과 학습..
Python_Deeplearning_pytorch_08(Image Augmentation) CNN small datasets 학습 학습할 Data의 개수가 많지 않을 때 CNN을 통한 모형 학습이 어려울 수 있음 - 딥러닝은 많은 양의 데이터셋을 이용해 feature engineering 과정 없이 원하는 문제를 해결할 수 있다. => Point: 많은 데이터 양 Data 양이 많지 않아 딥러닝 모델의 학습에 어려움이 있을 때 사용 가능한 방법 - Image augmentation 활용 - Image에 다양한 효과를 주어 데이터양을 늘린다. - Train dataset은 전체 대상 이미지들을 샘플링한 것이기 때문에 모든 형태를 다 가지고 있지 않다. Data augmentation은 train set의 이미지에 다양한 효과를 주어 실제 데이터셋과의 간격을 줄인다. - 영상데이터의 경우 각 영상..
Python_Deeplearning_pytorch_07(CNN_Model 정의) 1. Convolutional Neural Network 모델 정의 import 및 device 설정 import torch import torch.nn as nn device = "cuda" if torch.cuda.is_available() else "cpu" print(device) layer = nn.Conv2d(in_channels=4, #입력 데이터의 channel 수 out_channels=2, #filter(kernel) 수 kernel_size=3, #filter 크기(3:h, 3:w) # stride=1, # 이동크기 => 좌우, 상하 1칸씩 이동하면서 계산. # padding=0 # 패딩 크기 # padding="same" ) print(layer) input_data = torch...
Python_Deeplearning_pytorch_06(딥러닝모델_성능개선) 성능개선 기법 실습 모듈 정의 train.py 모델 학습과 검증 함수 정의 module dir 생성 import os os.makedirs('module', exist_ok=True) 모델 학습과 검증 함수 정의 %%writefile module/train.py import torch import time # multi와 binary 정확도 계산이 다르다. def test_multi_classification(dataloader, model, loss_fn, device="cpu") -> tuple: """ 다중 분류 검증/평가 함수 [parameter] dataloader: DataLoader - 검증할 대상 데이터로더 model: 검증할 모델 loss_fn: 모델 추정값과 정답의 차이를 계산할 los..
Python_Deeplearning_pytorch_05-2(모델저장_문제 유형별 모델 생성(이진분류), 정리) 이진분류(Binary Classification) 이진 분류 문제 처리 모델의 두가지 방법 1. positive(1)일 확률을 출력하도록 구현 - output layer: units=1, activation='sigmoid' - loss: binary_crossentropy 2. negative(0)일 확률과 positive(1)일 확률을 출력하도록 구현 => 다중분류 처리 방식으로 해결 - output layer: units=2, activation='softmax', y(정답)은 one hot encoding 처리 - loss: categorical_crossentropy 위스콘신 대학교에서 제공한 종양의 악성/양성여부 분류를 위한 데이터셋 Feature - 종양에 대한 다양한 측정값들 Target의..
Python_Deeplearning_pytorch_05(모델저장_문제 유형별 모델 생성(회귀, 다중분류)) 모델 저장 학습한 모델을 저장장치에 파일로 저장하고 나중에 불러와 사용(추가 학습, 예측 서비스) 할 수 있도록 한다. 파이토치는 모델의 파라미터만 저장하는 방법과 모델 구조와 파라미터 모두를 저장하는 두가지 방식을 제공한다. 저장 함수 - torch.save(저장할 객체, 저장경로) 보통 저장파일의 확장자는 pt 나 pth 를 지정한다. 모델 전체 저장하기 및 불러오기 저장하기 - torch.save(model, 저장경로) 불러오기 - load_model = torch.load(저장경로) 저장시 pickle을 이용해 직렬화하기 때문에 불어오는 실행환경에도 모델을 저장할 때 사용한 클래스가 있어야 한다. 모델의 파라미터만 저장 모델을 구성하는 파라미터만 저장한다. 모델의 구조는 저장하지 않기 때문에 불러..
Python_Deeplearning_pytorch_04(Dataset 과 DataLoader) Dataset 과 DataLoader 딥러닝 모델을 학습시키고 평가할때 사용할 데이터를 제공하기 위한 객체 torch.utils.data.Dataset - 원본 데이터셋(input/output dataset)을 저장하고 있으며 indexing을 통해 데이터를 하나씩 제공한다. - 제공시 data augmentation등 원본데이터를 변환해서 제공하도록 처리를 할 수 있다. - subscriptable, iterable 타입. > subscriptable타입: indexing을 이용해 원소 조회가 가능한 타입) torch.utils.data.DataLoader - Dataset의 데이터를 batch단위로 모델에 제공하기 위한 객체. - iterable 타입 - Dataset이 가지고 있는 데이터를 어떻게 ..
Python_Deeplearning_pytorch_03(딥러닝-MLP구현) Pytorch 개발 Process 1. 데이터 준비 Dataset 준비 Dataloader 생성 2. 입력과 출력을 연결하는 Layer(층)으로 이뤄진 네트워크(모델)을 정의 Sequential 방식: 순서대로 쌓아올린 네트워크로 이뤄진 모델을 생성하는 방식 - layer를 순서대로 쌓은 모델을 구현할때 간단히 모델을 정의할 수 있다. - layer block을 정의하는데 사용할 수 있다. Subclass 방식: 네트워크를 정의하는 클래스를 구현. - 다양한 구조의 모델을 정의할 수 있다. - inializer에서 필요한 layer들을 생성한다. - forward(self, X) 메소드에 forward propagation 계산을 구현한다. 3. train(학습) train 함수, test 함수 정의 4..