# dataloader

Pytorch 공식 문서와 함께하는 Pytorch 튜토리얼_2(Dataset과 DataLoader)
모든 내용은 파이토치 공식 문서의 Google Colab 공부 문서를 이용해 공부했습니다. Dataset과 DataLoader 데이터 샘플을 처리하는 코드는 지저분 하고 유지보수가 어려울 수 있습니다. 그렇기에 데이터셋 코드를 모델 학습 코드로부터 분리하는 것이 좋습니다. ->더 나은 가독성과 모듈성을 위해서입니다. Pytorch는 torch.utils.data.DataLoader 와 torch.utils.data.Dataset 두 가지 데이터 기본 요소를 제공하여 미리 준비해둔 데이터셋 뿐만 아니라 가지고 있는 데이터를 사용할 수 있도록 합니다. -Dataset은 샘플과 정답(label)을 저장하고 -DataLoader는 Dataset을 샘플에 쉽게 접근할 수 있도록 순회 가능한 객체(iterable)로 감쌈 Pytorch의 도메인 특화 라이브러리들은 미리 준비해둔 다양한 데이터셋을 제공합니다. -torch.utils.data.Datas
[pytorch] pytorch에서 데이터 로드하기
이 글은 OpenAI chatGPT으로부터 생성된 답변과 pytorch docs를 참고하여 작성되었습니다. pytorch에서 데이터를 모델에 로드하는 경우 기존 머신러닝 라이브러리(필자의 경우 sklearn+pandas+numpy 조합을 많이 사용했다)와 다르게 DataLoader class를 상속받는 별도의 클래스를 만들어 로드하여야 한다. 즉 데이터를 로드할 때 한 계층이 더 생긴 셈인데, 이는 미니 배치 학습 지원, 데이터 병렬 처리, 음성 데이터 등 다양한 데이터 형식 지원을 위해서라고 한다. 데이터 로드 과정 pytorch 라이브러리에서 기본적으로 제공하는 데이터 처리 모듈은 <a href="https://pytorch.org/docs/sta
Pytorch Framework 구조와 Custom Dataset & DataLoader
Pytorch Framework 구조 > >>- 필요한 라이브러리 > >>- Custom modeling > >>- 모델 생성 > >>- 옵티마이저 정의 > >>- 손실함수 정의 > >>- Custom Dataset & DataLoader ->학습을 위한 데이터셋 생성 -> 학습을 위한 데이터로더 생성 > >>Transfer Learning & Hyper Parameter Tuning > >>- 모델 학습 from torch.utils.data import Dataset class CustomDataset(Dataset): def init(self,): pass def len(self,): pass def getitem(self,idx): pass DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, batch_sample
6. Custom Dataset과 DataLoader
📌0. Dataset과 DataLoader PyTorch는 데이터 처리를 위한 두 가지 클래스(torch.utils.data.Dataset 및 torch.utils.data.DataLoader)를 제공한다. Dataset은 샘플과 정답(label)을 저장하고, DataLoader는 Dataset을 샘플에 쉽게 접근할 수 있또록 순회 가능한 객체(iterable)로 감싼다. 1. Dataset [example1] cifar-10 os.path: 파일 경로를 생성 및 수정하고, 파일 정보를 쉽게 다룰 수 있게 해주는 모듈 os.path.expanduser(path): 입력 받은 경로안의 "~"를 현재 사용자 디렉토리의 절대경로로 대체 절대 경로: 최초디렉토리를 기준으로경유한 경로를 모두 기입한 전체 경로를 의미 상대 경로: 절대 경로와 다르게 최초 디렉토리가 아닌 특정 경로를 기준으로 경로를 기입하는 방식. 주로 현재 작업하고 있는 폴더를 기

Custom dataset for stock pytorch
문제점 When feeding data to pytorch model df 에 시간 및 종목으로 data존재 train, test split 방법 기존 traintestsplit 으로 나누기 불가능 imbalance data : sampling sampler / weight에 적용 Custom Dataset input_width (관찰기간 ex. 120일 짜리) 부족시 제외하기 shuffle 은 어떻게 train test split 은 어떻게 문제점 - shuffle 을 그냥하면 안된다... 방법1: df_raw 를 나눈다 | 앞 시간텀 으로 학습한 내용으로, 뒷시간 텀 끼리만, 확인 방법2: index 를 random하게 선택한다. class 를 inherit 해서 training_index validation_index
부스트캠프 6주차
Compitition with AI Stages(1강) Pstage? 코드를 많이 쳐볼 수 있는 기회 실습위주의 skills 학습 전체적인 파이프라인(전처리 training, 제출 등) 경험 Compitition이란? kaggle, dacon…경진대회 많음 주최자가 원하는거: 데이터를 줄테니깐 좋은 방식을 알려줘..(우린 해결못했어) 직접 하면서 얻어가는게 많음 details compitition은 먼저 방향성(overview;목적, background, 의미, 이유, 대상, 도메인…)을 봐야함 문제를 집요하게 봐야함!! 중간에 의사결정하는 과정이 있는데 방향성을 가지면 원활하게 할 수 있음 숙제!! problem definition problem definition!!!!, 가장 중요 내가 풀어야 할 문제는 무엇인가 이 문제의 input과 output은 무엇인가 이 솔루션는 어디서 어떻게 사용되어지는가
pytorch snippet
torch.max 2022-11-23 torch.perm dataloader ref [stackoverflow: numpy array to pytorch] (https://stackoverflow.com/questions/44429199/how-to-load-a-list-of-numpy-arrays-to-pytorch-dataset-loader) Custom dataset time series with different code 각 id 별로 input_width에 맞는 조각 가능 id | time | temp --- | ---| --- 1 | 0 | 25 1 | 1 | 23 1 | 2 | 17 variable batch size https://discuss.pytorch.org/t/variable-size-of-batches-for-training/26971/3
부스트캠프 2주차
과제복습 모듈의 구성 주의할 점! (forward) forward함수는 nn.Module을 상속받은 클래스로부터 만든 model 객체를 데이터와 함께 호출하면 자동으로 실행이 된다. 예를 들어서 model이라는 이름의 객체를 생성하고, (위의 경우에) model(x)와 같이 객체를 호출하면 자동으로 forward연산이 수행된다. https://jungeui.tistory.com/26 위의 모듈을 사용하고 싶을때는 아래와 같이 사용하면 된다. nn.Sequential sequential은 순차적인 컨테이너다 모듈들이 이 안에 더해지며 컨테이너 안에서 순서대로 실행된다. nn.Sequential 작동순서 calculator(x)는 nn.Sequential(Add(1), Add(2), Add(3))(x)로 볼 수 있다. 실행 과정은 아래와 같(은 걸로 추청..?)한다.
부스트캠프 2주차
학습정리(1~3강) 텐서플로우와 파이토치의 차이 텐서플로우는 Define and Run : 그래프를 먼저 정의 → 실행 시점에 데이터를 먹여줌 파이토치는 Define by Run: 실행을 하면서 그래프를 생성함 Tensor의 view, squeeze, unsqueeze tensor를 조정 가능하게함 view: reshape과 거의 비슷하며 Tensor의 shape을 변환할 수 있다. squeeze: 차원의 개수가 1인 차원을 삭제(압축) unsqueeze: 차원의 개수가 1인 차원을 추가 행렬곱셈 연산은 dot이 아닌 mm사용 dot은 벡터간 연산, mm은 행렬간 연산이다. mm과 matmuldms broadcasting 지원 차이 mm: broadcast x, matmul은 broadcasting o 미분의 대상이 되는 것은 requires_grad=True, backward함수 사용! 학습정리(4~5강) 요약 4강(Au

Pytorch - Custom Dataset & DataLoader
Custom Dataset이란? 사용자가 정한 만큼의 데이터 양과 형식의 세팅 DataLoader이란? Dataset을 iterator와 index를 이용하여 batch size만큼의 데이터를 꺼내서 사용하는 객체 Custom Dataset의 기본 형태 init : 변수 선언 및 데이터 전처리 len : 데이터셋의 길이 반환 getitem : 해당하는 index의 데이터를 가져오는 함수 실습 titanic dataset 타이타닉 승객들의 데이터로 생존 여부 예측 preprocessing 전 preprocessing 후 , Dataloader 만들기
Word-Level 단위 Language Modeling을 하기위한 Dataset을 구성하는 방법과 Machine Translation을 위한 Dataset, Dataloader 구성 방법에 대해 알아본다. Dataset Language Modeling: WikiText-2 Mahcine Translation: Multi-30k 0. torchdata 설치하기 torchtext.datasets을 이용해 데이터셋을 불러오려면 torchdata를 설치해야한다. 자세한 내용은 이전 포스트를 확인하면 좋을 것 같다. 1. Language Modeling을 위한 데이터셋 구성하기 1.1. WikiText-2 불러오기 train 세트, val 세트, test 세트를 모두 불러와서 사용한다. [Train] = Valkyria Chronicles III = Senj

딥러닝 전단계_세팅
전처리 시작. 1. 크롤링 먼저하기 2. 불필요한 이미지 제거(일러스트, 상관없는 이미지 등) 3. 이미지 패딩 추가 및 리사이즈. 사진 저장하고 리사이즈 해야하는 듯..! 전처리 완료. 후처리 시작. torchvision transforms 는 모르겠다아아.... 추후 수정 예정...!

0527 Data Loader
1. 학습내용 Data Loader 딥러닝을 하면서 '데이터 로더는 어떻게 만들건가' 라는 고민을 하게 된다. 방법은 여러가지가 있다. tensorflow, pytorch, keras, caffe 등 방식에 맞게끔 데이터로더를 만들어야하고, 데이터가 많은 경우에는 어떻게 처리해야하고, 데이터가 적으면 어떻게 처리해야하는지 고려한다. 좋은 데이터 로더? 여러 파일로 쪼개져서 저장 / 읽기 가능 샤딩을 보고 만든게 배치 사이즈다. 그게 맞다고 정의를 할 순 없다. 아이디어 착안은 DB 분산처리의 샤딩을 가져와서 착안했다고 볼 수 있다. 병렬처리이기 때문에 유리한 구조고 가급적 여러 파일 형태를 그대로 유지한다. 파이토치에 데이터 셔플 구조가 있는 것을 확인했다. key, value 구조 빅O의 1에 가까운 접근시간을 가져서 빠르다. 대신에 메모리는 많이 먹는다. IO 병목 병목현상 : 여러 데이터가 한번에 들어가는데 시간 지체가 걸리는 것 캐시메모

GraphQL - Graphene: 7(Execution: Dataloader)
Dataloader > Dataloader를 이용하면 GraphQL에서 발생할 수 있는 N+1 problem을 해결할 수 있다. Dataloader는 현재 사용하는 앱에서 데이터를 가져오는 데 사용할 수 있는 fetching layer로, 이를 이용하면 데이터베이스나 웹 서비스와 같은 데이터 소스로부터 batching 또는 caching을 통해 간결하고 일관된 API를 제공할 수 있다. DataLoader는 batch data-loading(데이터 일괄 로딩)의 성능은 저하시키지 않으면서 애플리케이션의 불필요한 부분은 분리할 수 있도록 도와준다. 이를 통해 애플리케이션은 데이터를 가져오기 위한 요구 사항을 만족시키면서 동시에 데이터를 가져오기 위한 최소한의 요청만 할 수 있다. 아래 예시는 graphene에서 제공한 예시로, Promise를 리턴한다. 예시 batch loading function은 keys의 list를 인자로 받아
2주차 Dataset 과제 정리
Dataset Dataset의 기본 구성 요소 init : 데이터의 위치나 파일명과 같은 초기화 작업을 위해 동작한다. 일반적으로 CSV, XML파일과 같은 데이터를 불러온다. 여기에 이미지를 처리할 transforms들을 Compose해서 정의해둔다. len : Dataset의 최대 요소 수를 반환하는데에 사용한다. getitem : Dataset의 index번째 데이터를 반환하는데에 사용한다. 원본 데이터를 가져와서 전처리하고 데이터를 증강하는 부분이 여기에서 진행된다. DataLoader Dataloader는 모델 학습을 위해서 데이터를 미니 배치 단위로 제공해주는 역할을 한다. dataloader에는 앞서 생성한 Dataset 인스턴스가 들어간다. batch_size는 배치 사이즈를 정하는 인자이다. shuffle은 data를 섞어서 사용할지를 결정한다. num_workers는 데이터를 불러올 때 사용되는 subprocess의 개수이다. 학습 도

AI Tech - Custom Dataset & DataLoader
Dataset의 기본 구성 요소 init : 데이터 위치, 파일 명 등의 초기화 작업. 데이터를 불러온다. len : Dataset의 최대 요소 수를 반환 getitem : Dataset의 index 데이터 반환 iris Dataset 구현 titanic Dataset, DataLoader 구현 MNIST Dataset, DataLoader 구현 학습 데이터 이미지: train-images-idx3-ubyte.gz 레이블: train-labels-idx1-ubyte.gz 평가 데이터 이미지: t10k-images-idx3-ubyte.gz 레이블: t10k-labels-idx1-ubyte.gz AG_NEWS Dataset,

pytorch dataset, dataloader
졸업프로젝트 때 직접 dataset, dataloader를 구현했었는데 시간에 쫓겨서 개발한지라 정말 개발새발로 내 기억 속에 남아있다.. 이 참에 헷갈리거나 몰랐던 내용들 위주로 정리해봤다. data 흐름 중요한 것은 데이터를 tensor로 바꿔주는 것 또한 따로 고려를 해야한다는 것이다. 난 그냥 아무 곳에나 마구잡이로 막 넣었는데 ... torch.utils.Data.Dataset \len\, \getitem\ 등은 데이터에 맞춰 적당히 개발하면 된다. Tensor 변환 \getitem\에서 안한다! 즉, data를 load하는 시점에서는 데이터를 tensor로 변환하지 않는다. 학습이 시작되는 시점에 transformer와 같은 함수를 통해 일괄적으로 tensor로

NestJS graphql (4) dataloader
1.dataloader 도입 전 post.service.ts (AS-IS) graphql 쿼리 "NestJS graphql (3) 간단한 1:N 관계 예제" 글에서 잠깐 언급했던 1:N 문제를 해결하는 방법 중의 하나로 dataloader를 도입해봅시다. dataloader 도입 전, 위 graphql 쿼리를 실행하면 findAllByUserId 함수가 User의 개수 만큼 실행이 됩니다. 2.dataloader 도입 후 post.service.ts (TO-BE) findAllByUserId 함수에서 직접 db에 접근했던 로직을 dataLoaderPost.load()를 호출하도록 변경했습니다. 여전히 findAllByUserId 함수는 N번 실행(dataLoaderPost.load도 N번 실행됩니다) 되겠지만, db에 접근하는 로직(getPostsByIds
Tensorpack으로 DataLoader 구현하기
Dataflow란? 파이선 자체에 있는 generator와 같은 맥락 Parallel Dataflow 구현하기 Dataflow를 parallel하게 구현하는 방법에는 크게 두 가지가 있다 같은 dataflow를 여러번 실행하고, 결과를 queue에 저장하기 Dataflow의 task를 distribute하기 물론 두 가지 방법을 동시에 사용할 수도 있다 같은 dataflow를 여러 프로세스에서 실행하고, 결과를 queue에 저장하기 위와 같은 경우에는 d1에 랜덤성이 있어야 한다. 아니면 모든 thread가 다 같은 결과를 return함 Dataflow의 task를 distribute하기 위와 같은 경우 d1은 한 프로세스에서 돌아가고, f가 threading된다. d1을 충분히 efficient하게 구현해야 효과가 좋다. d1에서의 랜덤성을 고려하지 않아도 된다 두 가지 방법 모두 multi threading, multi pro