일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 회고록
- 문자열
- DP
- BFS
- 미래는_현재와_과거로
- back propagation
- tensorflow
- 알고리즘
- 세그먼트 트리
- object detection
- dfs
- lazy propagation
- 백트래킹
- 플로이드 와샬
- pytorch
- 다익스트라
- dropout
- 크루스칼
- 이분 탐색
- c++
- 자바스크립트
- NEXT
- Overfitting
- 조합론
- 우선 순위 큐
- 분할 정복
- 2023
- 가끔은 말로
- 너비 우선 탐색
- 가끔은_말로
- Today
- Total
목록Code about AI (40)
Doby's Lab
🤔 QuestionPyTorch에서는 모델을 학습시킬 때, (특히 Back Propagation이 일어날 때) 아래와 같은 과정을 거칩니다. 1) optimizer의 종류와 learning rate에 따른 optimizer를 선언하면서 model의 parameter 값을 넘깁니다.2) .grad 속성 값을 optim.zero_grad()를 통해 초기화시킵니다. (.grad accumulate 방지)3) 그 다음, .backward()를 호출시켜서 각 Tensor의 .grad 속성을 갱신합니다. 4) 마지막으로, optimizer.step()을 통해서 각 Tensor의 업데이트를 진행합니다. 이 과정에서 궁금했던 부분은 '정말 실제 model의 가중치를 업데이트하는가?'였습니다. 너무나..
🤔 IntroPyTorch를 공부하다가 파이썬에서 OOP를 하게 되었습니다.예전에 파이썬에서 Class에 대해 공부한 것과 이번 학기에 학교에서 공부하게 된 객체지향프로그래밍(Java)을 통해 상속(inheritance)에 대한 개념을 알고 있었습니다.더 나아가 PyTorch 핸들링을 위해 파이썬의 상속에 대해 추가적으로 알게 된 점들을 정리해보고자 합니다.(+ 개념 정리 아닙니다. 개념에 대해서는 정리가 잘 된 부분들이 많기에 궁금한 부분들만 정리했습니다.) 해당 포스팅에서는 부모 클래스를 상속받는 자식 클래스의 Constructor(__init__ 메서드)에서 super().__init__()의 유무에 따른 차이를 알아봅니다.🤔 자식 클래스에서 super().__init__()을 하..

🤔 Problem tensorflow에서 제공하는 LSTM을 사용을 하면서 마주했던 에러 ArgumentIndexError에 대해 정리를 해보고자 합니다. 시계열 데이터를 학습하려는 시도의 과정에서 에러가 발생했으며, 에러의 자세한 내용은 Incompatible shapes: [32,4] vs. [32,20,4] 다음과 같습니다. 그리고, 에러가 났었던 모델의 코드는 아래와 같습니다. model = tf.keras.models.Sequential() model.add(tf.keras.layers.LSTM(units=64, input_shape=train_x.shape[-2:], dropout=0.1, recurrent_dropout=0.1, activation='tanh', return_sequences..
✅ Intro tensorflow를 활용할 때, 이전에는 ImageDataGenerator를 통해 이미지 분류 프로젝트를 진행했던 경험이 있습니다. 이번엔 다른 Task를 다루어서 데이터셋은 당연히 Numpy type을 통해 학습시키지 않을까 했지만, tensorflow에서 제공하는 tf.data.Dataset 클래스가 보편적으로 많이 사용되는 것을 보고, 유용하겠다라고 판단했기 때문에 포스팅을 작성하게 되었습니다. ✅ tf.data.Dataset tf.data.Dataset은 TensorFlow에서 데이터를 효율적으로 처리하고, 입력 파이프라인을 구성하기 위해 도입된 개념입니다. 메모리와 병렬처리같은 다양한 장점들이 많았지만, 데이터 입력 파이프라인 구성을 위해 사용할 수 있다는 점이 직관적으로 '유용..
🤔 Problem XGBRegressor와 MultiOutputRegressor를 결합하여 다중회귀출력 모델을 만들었고, 이 모델의 기존 하이퍼 파라미터를 default 값 세팅에서 튜닝을 시작할 때, 발생한 에러에 대해 정리하고자 합니다. XGB는 xgboost에서 제공하는 라이브러리를 사용하였습니다. from xgboost import XGBRegressor 두 모델을 결합하기 위해 아래와 같은 코드를 작성했었습니다. dtrain = xgb.DMatrix(data=train_X, label=train_Y) dtest = xgb.DMatrix(data=test_X, label=test_Y) params = { 'max_depth':3, 'eta':0.1, 'objective':'reg:squareder..
최근에 다른 분들 코드 분석을 하면서 알게 된 패키지입니다. 일반적으로 파일을 불러오거나 같은 파일 시스템을 이용하기 위해서는 os 모듈을 사용했었는데 pathlib을 사용하는 케이스를 많이 봐서 전체보다는 주로 사용하는 기능들을 정리해보려 합니다. 그리고, pathlib은 파이썬 3.4 이상부터 지원이 됩니다. 1. 객체로 선언 pathlib 패키지에서 Path를 불러와서 아래와 같이 Path()에 파일 경로를 담아 파일 경로를 하나의 객체로 선언합니다. from pathlib import Path file_path = './from/to/here' p = Path(file_path) 2. 문자열이 아닌 객체, os.path.join을 대체하는 연산자 '/' 우선, os와 다른 점은 파일에 대한 경로를..

✅ Contents 1. Intro 2. Generator란 3. ImageDataGenerator 4. flow (flow_from_directory) 5. Code 6. How to Work (Question) 7. Better Training? 8. Outro 9. Reference ✅ 1. Intro 프로젝트를 하면서 Image Augmentation이라는 기술을 접했는데 대부분 ImageDataGenerator를 사용하여 Image Augmentation을 하는 코드를 많이 봤습니다. 이번 포스팅에서는 ImageDataGenerator에 대해 알아봅시다. ✅ 2. Generator란 Generator라는 개념에 대해서는 아래의 포스팅에서 정리하였으니 참고하시길 바랍니다. https://draw-..
steps_per_epoch ImageDataGenerator를 통해 Iterator를 만들어서 모델을 학습시킬 때, Iterator는 Batch를 계속 발생시킵니다. 그래서 한 Epoch에 어떻게 몇 개의 Batch를 넣어야 할지는 문제로 다가올 수 있습니다. 이러한 문제를 해결할 수 있는 방안으로 fit의 argument에는 steps_per_epoch가 존재합니다. steps_per_epoch는 '한 에포크에 몇 개의 배치를 넣을 건가'를 묻는 argument입니다. 만약에 하나의 데이터셋을 모두 학습시키고 싶다면 (전체 샘플의 개수 // 배치 사이즈)로 구하여 한 에포크에 들어가는 배치의 개수를 할당해줄 수 있습니다. 물론 배치 사이즈를 나누었을 때, 나머지가 있다면 + 1을 해주어 적절하게 할당..