일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 2023
- object detection
- back propagation
- 다익스트라
- Overfitting
- 자바스크립트
- 미래는_현재와_과거로
- 너비 우선 탐색
- 분할 정복
- NEXT
- 문자열
- 플로이드 와샬
- BFS
- 조합론
- 가끔은_말로
- 알고리즘
- 회고록
- dropout
- 가끔은 말로
- DP
- 세그먼트 트리
- 크루스칼
- 백트래킹
- 이분 탐색
- pytorch
- tensorflow
- lazy propagation
- dfs
- c++
- 우선 순위 큐
- Today
- Total
목록Code about AI/tensorflow (7)
Doby's Lab

🤔 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에서 데이터를 효율적으로 처리하고, 입력 파이프라인을 구성하기 위해 도입된 개념입니다. 메모리와 병렬처리같은 다양한 장점들이 많았지만, 데이터 입력 파이프라인 구성을 위해 사용할 수 있다는 점이 직관적으로 '유용..

✅ 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을 해주어 적절하게 할당..

Callback keras는 Callback이라는 개념이 있습니다. 에포크를 진행하면서 특정한 값을 모니터링하면서 학습에 변동사항을 주는 기능입니다. Callback에는 여러 가지 종류가 많지만 자주 쓰이는 2가지만 알아봅시다. EarlyStopping EarlyStopping이란 조기 종료라는 뜻으로 에포크를 진행하면서 Overfitting으로 간주된다면 학습을 멈추는 Callback입니다. 조금 더 디테일하게 접근하기 위해 함수부터 알아봅시다. early_stopping_cb = keras.callbacks.EarlyStopping(monitor='val_loss', mode='min', min_delta=0, patience=10, verbose=1, restore_best_weights=True)..
🤔 Problem 모델을 학습시키는 과정에서 이상한 현상이 나타나 문제점으로 삼았습니다. 문제는 train_set의 Accuracy는 100%로 유지되며 Loss는 변동이 거의 없다가 갑자기 한 두 번 엄청 상승하는 현상이었습니다. validation_set에서도 이러한 문제점을 찾을 수 있었습니다. Accuracy가 100%로 유지되고, Loss는 0으로 유지되었습니다. 이런 완벽한 모델이 현실에서 존재할 수 없을뿐더러 완벽했다면 test_set에서도 좋은 결과가 있었어야 하지만, Accuracy는 약 50%, Loss는 약 84.4가 나왔습니다. 😀 Solution 문제점은 데이터셋이 아예 섞여있지 않았기에 발생했던 문제입니다. 문제에 대한 이유 추측 모델이 개에 대해서만 학습했다가 고양이가 들어오니..
🤔 Problem 이미지 데이터셋을 전처리하는 과정에서 Min Max Scaling 방법을 통해 Normalization을 해주려 했습니다. 이미지 Dataset이기 때문에 min값과 max값이 각각 0, 255이기 때문에 데이터셋에 255.0을 나누어주면 되죠. (+255.0으로 나누는 이유는 255.0으로 나눔으로써 int type에서 float type으로 type casting이 되기 때문입니다.) 즉, 코드로 나타내면 이런 식으로 해주면 되겠죠. def minmax_scaler(dataset) dataset = dataset / 255.0 return dataset 여기서 문제가 발생합니다. 시스템 RAM을 모니터링해보면 RAM이 초과되는 것을 알 수 있습니다. RAM이 초과됨에 따라서 런타임도..