데이터의 작업 순서
1.데이터 수집: 원하는 작업에 맞는 데이터를 수집합니다. 이는 주어진 작업에 필요한 특성을 가진 적절한 데이터를 찾는 과정입니다. 예를 들어, 이미지 분류 작업을 위해 이미지 데이터를 수집하는 것입니다.
2.데이터 전처리: 수집한 데이터를 모델에 적용 가능한 형태로 가공합니다. 이 단계에서는 데이터를 정제하고, 노이즈를 제거하며, 필요한 형식으로 변환하는 등의 작업을 수행합니다. 예를 들어, 이미지 데이터의 경우 크기를 조정하거나 정규화하는 등의 전처리를 진행합니다.
3.데이터 분할: 전체 데이터를 훈련용, 검증용, 테스트용 데이터로 분할합니다. 일반적으로 데이터의 70-80%를 훈련용 데이터로 사용하고, 나머지를 검증용과 테스트용 데이터로 사용합니다.
4.모델 훈련: 훈련용 데이터를 사용하여 모델을 학습시킵니다. 모델은 데이터의 입력과 출력 간의 관계를 학습하고, 가중치와 매개변수를 조정하여 예측을 수행할 수 있도록 합니다.
5.모델 평가 및 성능 개선: 검증용 데이터를 사용하여 모델의 성능을 평가합니다. 성능 측정 지표를 확인하고, 필요한 경우 모델의 하이퍼파라미터를 조정하거나 모델 구조를 수정하여 성능을 개선합니다.
6. 모델 테스트: 테스트용 데이터를 사용하여 최종 모델의 성능을 평가합니다. 이 단계에서는 테스트용 데이터에 대한 예측을 수행하고, 결과를 평가하여 모델의 일반화 능력과 실제 환경에서의 성능을 확인합니다.
7. 모델 배포: 최종 모델을 배포하고, 새로운 입력 데이터에 대한 예측을 수행합니다. 이 단계에서는 모델을 실전 환경에 적용하고, 필요에 따라 모델의 유지보수 및 업데이트를 수행합니다.
Data Set Split
인공신경망에 사용되는 데이터로 일단 모두 다 라벨링은 되있어야 한다(정답지 필요)
1. original data set(full dataset)
2. 훈련용 데이터, 검증용 데이터
3. 테스트 데이터 (별개로 데이터 모아놓아라)
훈련용 데이터는 모델의 학습을 위해 사용되고,
검증용 데이터는 모델의 성능 평가와 하이퍼파라미터 튜닝에 사용되며,
테스트용 데이터는 최종 모델의 성능을 평가하기 위해 사용
훈련용 데이터
레이블링된 데이터가 포함된 데이터 수집
검증 데이터
학습시키고 있는데 중간에 끊고 테스트하기 힘들기 때문에 epoch마다 검증을 껴넣기 시작하여 검증 데이터가 필요,
이를 통해 모델 아키텍쳐나 모델 하이퍼파라미터 개선할 수 있다
검증 데이터는 학습 데이터에서 일부를 임의로 분리하여 사용할 수 있다
테스트 데이터
모델이 학습한 적 없는 데이터로 구성, 최종 성능 평가에 사용, 훈련 및 검증단계에서 사용하면 안됨
데이터로더
1. 배치 처리: 데이터를 지정된 배치 크기로 분할하여 모델에 제공합니다.
2. 데이터 셔플: 데이터를 무작위로 섞어 훈련 중 데이터의 순서를 랜덤하게 만듭니다.
3. 병렬 처리: 데이터를 여러 개의 프로세스 또는 스레드로 병렬로 불러와 모델의 입력에 효율적으로 공급합니다.
4. 데이터 온 디맨드(Dataset on Demand): 필요한 만큼의 데이터만 불러올 수 있어 메모리 사용량을 최적화할 수 있습니다.
데이터로더를 사용하기 위한 단계
1. 데이터셋 생성: 데이터를 로드하거나 생성하여 데이터셋 객체를 생성합니다. 이 데이터셋 객체는 PyTorch의 Dataset 클래스를 상속한 사용자 정의 클래스 또는 기본 제공 데이터셋 클래스일 수 있습니다.
2.데이터 변환: 필요한 경우 데이터셋에 전처리 또는 변환을 적용합니다. 예를 들어, 이미지 데이터의 경우 이미지를 텐서로 변환하거나 정규화할 수 있습니다.
3. 데이터로더 생성: 데이터로더 객체를 생성하고 데이터셋을 인자로 전달합니다. 배치 크기, 셔플 여부, 병렬 처리 여부 등의 매개변수를 설정할 수 있습니다.
4. 반복(iteration): 데이터로더를 반복문에서 사용하여 배치 단위로 데이터를 가져옵니다. 각 반복마다 모델에 입력으로 제공되는 배치 데이터와 해당하는 레이블을 얻을 수 있습니다.
PyTorch에서는 torch.utils.data.DataLoader 클래스를 사용하여 데이터로더를 생성할 수 있음, 그 외에도 구글의 텐서플로우에서 만든 tfrecord 등등도 있다.
PyTorch 데이터 로더
목적: 효율적인 데이터 공급을 위해 데이터셋을 배치 단위로 분할하고, 데이터를 로드하고 전처리
작업 과정:
1. 데이터셋 생성: PyTorch의 Dataset 클래스를 상속하여 데이터셋 객체를 생성합니다. 데이터셋 객체는 입력 데이터와 해당하는 레이블 또는 타겟 값을 제공합니다. 이때 데이터셋은 훈련 데이터, 검증 데이터, 테스트 데이터 등을 나타낼 수 있습니다. 데이터셋은 __getitem__ 메서드를 구현하여 인덱스를 통해 데이터와 레이블을 접근할 수 있도록 합니다.
2. 데이터 변환: 데이터셋에 필요한 전처리 또는 변환을 적용합니다. 이 단계에서는 입력 데이터에 대한 정규화, 이미지 데이터의 크기 조정, 데이터 증강(augmentation) 등의 작업을 수행할 수 있습니다. 이를 위해 PyTorch의 transforms 모듈을 사용할 수 있습니다.
3. 데이터 로더 생성: 데이터 로더 객체를 생성하여 데이터셋을 래핑합니다. 데이터 로더는 데이터셋을 배치 단위로 분할하고, 데이터를 효율적으로 로드하기 위해 병렬 처리와 데이터 셔플 기능을 제공합니다. 데이터 로더는 torch.utils.data.DataLoader 클래스를 사용하여 생성됩니다. 이때 배치 크기, 셔플 여부, 병렬 처리 여부 등의 매개변수를 설정할 수 있습니다.
4. 반복(iteration): 생성한 데이터 로더를 반복문에서 사용하여 배치 단위로 데이터를 가져옵니다. 각 반복마다 모델에 입력으로 제공되는 배치 데이터와 해당하는 레이블을 얻을 수 있습니다. 이러한 반복 과정은 주로 모델의 훈련과 검증 단계에서 사용되며, PyTorch의 학습 루프나 훈련 함수에서 반복적으로 수행됩니다.
CPU(Central Processing Unit):
목적:
CPU는 컴퓨터 시스템의 "뇌"로서 다양한 작업을 수행
주요 목적은 범용적인 계산 작업을 처리
CPU는 다양한 작업을 순차적으로 처리하며, 각 작업에 대해 정확하고 복잡한 제어
디자인 구조:
CPU는 소수의 코어(컴퓨팅 유닛)로 구성되며, 각 코어는 복잡한 제어 유닛과 캐시 메모리 등의 추가 기능을 가지고 있음
CPU의 코어는 일반적으로 성능이 높고 복잡한 계산 작업을 처리하는 데 특화
CPU는 범용 목적을 위해 다양한 유형의 작업을 수행할 수 있는 다양한 명령어 세트를 지원
GPU(Graphics Processing Unit):
목적:
그래픽 연산에 특화
그래픽 처리 작업인 3D 렌더링, 비디오 인코딩 및 디코딩, 이미지 처리 등을 고속으로 처리하는 데 사용
또한 최근에는 딥러닝과 같은 병렬 계산 작업에서도 많이 사용
디자인 구조:
GPU는 수많은 작은 코어(스트림 프로세서 또는 CUDA 코어)로 구성
각 코어는 단순하지만 많은 양의 작업을 동시에 처리할 수 있음
GPU는 대규모 데이터 병렬 처리에 특화
동일한 작업을 동시에 여러 개의 데이터에 적용하여 높은 처리량을 달성
->
CPU는 범용적인 계산 작업을 처리하기 위해 복잡한 제어와 높은 성능이 필요한 작업에 적합
반면에 GPU는 그래픽 처리 및 병렬 계산 작업에 특화되어 있으며, 대량의 작업을 동시에 처리하는 데 효율적
일반적으로 GPU는 대량의 데이터와 복잡한 모델을 다루는 딥러닝 및 머신러닝 작업에 많이 사용
CPU는 CPU의 다양한 기능과 유연성으로 전처리, 간단한 모델 훈련 및 개발 단계에서 사용
딥러닝 라이브러리 : PyTorch
딥러닝을 위한 오픈소스 머신러닝 라이브러리로, 유연하고 강력한 도구를 제공하여 딥러닝 모델을 구축하고 학습시키는 데 사용
(keras, tensorFlow,Pytorch 등등 중에서 pytorch를 하는 이유... keras는 일단 tensorFlow와 통합되었고 Tensorflow는 복잡하다)
주요 목적
1. 딥러닝 모델 구축: PyTorch는 모델 아키텍처를 정의하고, 다양한 유형의 레이어, 활성화 함수, 손실 함수 등을 사용하여 딥러닝 모델을 구축하는 데 사용 (모델의 계층적 구조를 유연하게 설계가 가능)
2. 모델 학습: PyTorch는 모델에 입력 데이터를 주입하고, 순전파(forward pass)를 통해 출력을 계산하며, 손실 함수를 사용하여 예측과 실제 값 사이의 오차를 계산. 이후 역전파(backward pass) 알고리즘을 통해 그래디언트(gradient)를 계산하고, 옵티마이저(optimizer)를 사용하여 모델의 가중치를 업데이트하여 학습하는 과정을 수행
3. 데이터 로딩 및 전처리: PyTorch는 데이터 로딩과 전처리를 위한 편리한 도구들을 제공. 데이터셋 클래스를 사용하여 데이터를 로드하고, transforms 모듈을 사용하여 데이터 전처리를 수행. 또한 데이터 로더(DataLoader)를 사용하여 데이터를 배치 단위로 분할하고 병렬 처리를 수행할 수 있음.
4. 모델 평가 및 추론: 학습된 모델을 사용하여 새로운 데이터에 대한 예측을 수행하거나 모델의 성능을 평가. PyTorch는 추론(inference) 작업을 위한 기능을 제공하며, 학습된 모델을 배포하고 활용하는 데 유용
작업 과정
1. 데이터 준비: 입력 데이터와 해당하는 레이블 또는 타겟 값을 가지고 있는 데이터셋을 생성
2. 모델 구성: 모델 아키텍처를 정의하고, 필요한 레이어와 활성화 함수를 사용하여 모델을 구성
3. 손실 함수 정의: 모델의 출력과 실제 값 사이의 오차를 계산하기 위한 손실 함수를 정의
4. 옵티마이저 선택: 모델의 가중치를 업데이트하기 위한 옵티마이저를 선택하고 초기화
5. 학습 루프 실행: 주어진 데이터셋을 사용하여 모델을 학습. 입력 데이터를 모델에 주입하고, 순전파를 통해 예측 값을 계산한 후, 손실 함수를 사용하여 오차를 계산하고 역전파 알고리즘을 통해 모델의 가중치를 업데이트
6. 모델 평가 또는 추론: 학습된 모델을 사용하여 새로운 데이터에 대한 예측을 수행하거나 모델의 성능을 평가합니다.
PyTorch의 유연한 구조와 동적 계산 그래프는 딥러닝 모델의 개발과 실험을 효율적으로 수행할 수 있도록 도와줌
Pytorch 설치
1. 가상환경 구축
아나콘다 프롬포트(실행) -> 윈도우: 관리자 권한으로 열기!!
2. 가상환경에서 가상환경 만들기
conda create -n 가상환경명칭 python==3.8

3. 가상환경 접속
conda activate 가상환경명

-----------
Pytorch 설치
PyTorch
An open source machine learning framework that accelerates the path from research prototyping to production deployment.
pytorch.org

pc에 gpu가 있으면 얘를 설치(윈도우 기준)

cpu만 있으면 이것을 설치
Ctrl + Shift + ESC
작업관리자 - 성능 탭에서 GPU 유무를 확인하실 수 있습니다.

conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c pytorch
# gpu 있는 윈도우

버전 확인
python -c "import torch; print(torch.__version__)"

이제 주피터 노트북과 kernal 설치하고 쓰면 된다
가상환경 삭제
가상환경 삭제
conda remove --name [가상환경명] --all
'machine_learning' 카테고리의 다른 글
| 데이터 가공 구축 프로세스 (0) | 2023.06.22 |
|---|---|
| 데이터 수집과 전처리2 (0) | 2023.06.14 |
| 데이터 수집과 전처리 (0) | 2023.06.14 |
| 통계 - 인자분석 (0) | 2023.06.02 |
| 통계 - 주성분 분석(PCA) (0) | 2023.06.01 |




