목록전체 글 (295)
UOMOP
Data Augmentation(데이터 증강) : CNN 모델의 성능을 높이고, overfitting을 극복할 수 있는 가장 좋은 방법은 다양한 우형의 학습 이미지 데이터의 양을 늘리는 것이다. 데이터 증강은 다양한 유형의 학습 이미지 데이터의 양을 늘리는 것이지만, 실제 개수를 늘리는 것이 아니라, epoch마다 변형된 image가 학습하는 데 사용되는 것이다. iteration이 돌 때마다 사진이 변형되는 것이지, 사진이 여러 개 생기는 것은 아니다. 공간(spatial) 레벨 변형, 픽셀(pixel) 레벨 변형을 분류가 되며, keras의 대표적인 Augmentation으로는 ImageDataGenerator가 있다. 1. 각종 모듈, 함수 호출 import numpy as np import pan..
ModelCheckpoint 특정 조건을 만족했을 경우, 그 때의 모델을 저장 filepath : 특정 조건을 만족했을 때, 모델이 저장되는 위치 monitor : 확인해볼 성능 지표 save_best_only : 가장 성능이 좋은 모델만을 저장할 것인지 save_weights_only : weight(가중치)만을 저장할 것인지 verbose : 상황 설명 period : 상황 설명에 대한 주기 mode : [min, max, auto]중 하나를 지정(min의 경우 loss와 같이 감소할수록 좋을때, max의 경우 accuracy와 같이 증가할수록 좋을때) ReduceLROnPlateau 지정한 epoch (patience)동안 성능이 개선되지 않는다면, Learning Rate를 감소시킨다. monit..
우선, 과적합이란 "모델이 학습시키는 데이터에만 집중하게 되어 다른 데이터로 성능을 확인할 때는 성능이 떨어지는 현상", 즉, "학습 데이터일 때만 Loss값이 매우 낮고 검증(또는 테스트) 데이터일 때는 Loss값이 상대적으로 높은 현상"을 의미한다. 이때 가중치 규제를 준다는 것은 원래의 손실 함수 출력 값에 아주 작은 값을 추가해 고의적으로 학습 데이터에 대한 Loss를 키운다. 학습 데이터로 얻은 Loss 출력에 일종의 불순물(?)을 넣어주고 이 데이터에만 집중하지 않게 해 줌으로써 검증(또는 테스트) 데이터에도 집중을 하게끔 한다. 이렇게 Overfitting 현상을 방지한다. 만약 가중치의 절댓값을 더해준다면 l1 tensorflow.keras.regularizers.l1(알파값) 가중치의 제..
GAP(GlobalAveragePooling)은 overfitting 현상을 조금 방지할 수 있다. Flatten을 이용해서 1차원 데이터로 만든 후 모든 노드에 연결을 시켜주면 parameter가 상당히 많이 나온다. parameter가 너무 많이 나오면 해당 데이터에만 과도 학습되어 overfitting이 발생하는데, 이를 GAP을 통해서 조금 해결해보도록 한다. GAP는 한 feature map의 하나의 channel 전체 값을 평균 내어 1개의 unit을 생성시킨다. 이 unit들을 노드에 연결시켜 parameter가 과하게 나오는 것을 막는 것이다. import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection im..
1. 각종 모듈 호출 import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from tensorflow.keras.datasets import cifar10 from tensorflow.keras.utils import to_categorical from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Conv2D, BatchNormalization, Activation, MaxPooling2D,\ Flatten, Dropout, Dense from tensorflow.keras...
1. 각종 모듈 호출 import numpy as np from sklearn.model_selection import train_test_split from tensorflow.keras.datasets import cifar10 from tensorflow.keras.utils import to_categorical from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Conv2D, BatchNormalization, Activation, MaxPooling2D,\ Flatten, Dropout, Dense from tensorflow.keras.optimizers import Adam from tens..