반응형
- 모델이 복잡해짐에 따라 텐서플로우를 사용함
- 본 문서는 개인적 학습을 위해 작성된 문서임
데이터셋 불러오기
import tensorflow as tf
print(tf.__version__)
fashion_mnist=tf.keras.datasets.fashion_mnist
(train_X,train_Y),(test_X,test_Y)=fashion_mnist.load_data()
# fashion_mnist-의류이미지/10개의범주/단일채널/28*28
print(len(train_X),len(test_X))
# 데이터의수확인하기(학습데이터수6만개/ 테스트데이터수1만개)60000 10000
- 구현에 사용될 데이터셋을 불러온다.
데이터 정규화
train_X = train_X/255.0
test_X = test_X/255.0
- 데이터셋에 대해 최소-최대 정규화를 진행한다.
- (X-MIN) / (MAX-MIN)
모델 제작
model=tf.keras.Sequential([tf.keras.layers.Conv2D(input_shape=(28,28,1),kernel_size=3,3),filters=32),
tf.keras.layers.MaxPool2D(strides=(2,2),pool_size=(2,2)),
tf.keras.layers.Conv2D(kernel_size=(3,3),filters=64),
tf.keras.layers.AvgPool2D(strides=(2,2)),
tf.keras.layers.Conv2D(kernel_size=(3,3),filters=128),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(units=128,activation='relu'),
tf.keras.layers.Dropout(rate=0.3),
tf.keras.layers.Dense(units=10,activation='softmax')])
- 텐서플로우 Sequential을 이용해 모델을 쌓는다.
- 합성곱 계층과 풀링계층(최대치풀링, 평균풀링), 드롭아웃까지 모두 활용했다.
- 풀링과 드롭아웃이 학습이 과적합되는 것을 방지해준다.
- filters : 몇개의필터를생성할것인지(점점 많아지는 것이 좋음.)
- strides : 건너뛰기(default(1,1))
- padding : 패딩방식(default'valid')
모델 학습
model.compile(optimizer=tf.keras.optimizers.Adam(),loss='sparse_categorical_crossentropy',metrics=['accuracy'])
model.fit(train_X,train_Y,epochs = 500,validation_split=0.25,callbacks= tf.keras.callbacks.EarlyStopping(patience=5,monitor='val_loss')])
- 최적화 방식으로는 아담방식을 사용한다.
- 손실함수는 교차엔트로피를 사용한다.
- 평가지표는 accuracy(정확도)이다.
- callback 으로 EarlyStopping을 사용했다. val_loss가 5번 연속으로 상승되지 않으면 학습을 중단한다.
평가
model.evaluate(test_X,test_Y)
==결과==
loss: 0.3248 -accuracy: 0.8921
반응형
'🛠 기타 > Data & AI' 카테고리의 다른 글
텐서플로우 허브 (0) | 2020.08.14 |
---|---|
이미지 보강 (ImageDataGenerator) (0) | 2020.08.14 |
[scikit-learn 라이브러리] BaggingClassifier (배깅분류기) (0) | 2020.08.13 |
[scikit-learn 라이브러리] RandomForestClassifier (랜덤 포레스트 분류) (1) | 2020.08.12 |
[scikit-learn 라이브러리] VotingClassifier (보팅 분류기) (0) | 2020.08.12 |