티스토리 뷰
https://www.tensorflow.org/tutorials/keras/classification?hl=ko
기본 분류: 의류 이미지 분류 | TensorFlow Core
도움말 Kaggle에 TensorFlow과 그레이트 배리어 리프 (Great Barrier Reef)를 보호하기 도전에 참여 기본 분류: 의류 이미지 분류 이 튜토리얼에서는 운동화나 셔츠 같은 옷 이미지를 분류하는 신경망 모델
www.tensorflow.org
1. 데이터셋 살펴보기
10개의 카테고리 [ 다중분류이기때문에 확률값으로 비교해서 가장 높은 확률의 카테고리를 선택하도록 하는 모델을 생성해야함]
70000개의 "흑백"이미지로 구성된 패션 MNIST 데이터셋 [ 이미 흑백이미지여서 색 변경을 하지 않아도 됨]
이미지 해상도 : 28*28 [resize하지 않아도 됨]
훈련데이터 : 60000개의 이미지를 사용 (60000, 28, 28) / 훈련데이터 label : 60000개의 데이터 [0-9 사이의 숫자]
평가데이터 ; 10000개의 이미지를 사용 (10000, 28, 28) / 평가데이터 label : 10000개의 데이터 [0-9 사이의 숫자]

2. 데이터 전처리
이미지 픽셀값 조정
이미지 픽셀 : 28*28의 해상도 (756개의 픽셀로 하나의 이미지가 구성됨)
하나의 픽셀 : 0 ~ 255사이의 값
=> 이미지 하나당 메모리를 크게 차지할 수 있기에 성능이 저하될 수 있음 -> 훈련세트와 테스트세트 모두 전처리!
[적용방법]
train_image = train_imgae/ 255.0 // test_image = test_image/255.0
=> train_imgae, test_image 의 경우 numpy array이기에 연산이 가능
3. 모델 구성( 1. 예측모델 구성 , 2. parameter 결정 = 훈련)
1. 층 설정
신경망의 층을 결정해야합니다.
훈련을 하면서 parameter가 예측 모델의 성능이 좋아지는 방향으로 upgrade됩니다.
2차원 배열의 이미지를 Flatten함으로써 28,28의 shape를 756의 shape를 가진 1차원 벡터로 변경합니다.
=> layer와 convolution을 적용해야하기 때문입니다.
Dense층 ( 즉, 밀집 연결 = 완전 연결 층)을 통해서 두번째 층을 생성하는데 노드의 개수를 결정하고 활성화함수를 설정합니다.
=> 이때, 활성화 함수로 relu, 128개의 노드를 설정하고 싶다면 ? tf.keras.;ayer.Dense(128, activation='relu')
여기서는 간단하게 활성화 함수가 무엇인지만 알아봅시다!
활성화함수는 말그래도 얼마나 활성화를 시킬까?를 결정해주는 함수입니다.
input값(이미지를 flatten시켜서 얻은 756개의 픽셀값)을 얼마나 활성화(얼만큼의 중요도를 주어서)를 시켜서 return할까?(class를 결정하는 노드에 값을 보낼까?)를 결정.
그 활성화함수의 결과값이 클수록 layer의 해당 노드에 의미 부여를 많이하고 중요하게 생각하겠다는 것이고 return값이 작을수록 그 노드는 별로 신경쓰지 않겠다는 의미입니다. 이것을 가중치(얼마나 중요한지의 정도)를 정하는 과정이라고하고 이것을 활성화정도를 결정한다고합니다. 이 활성화 정도를 결정하는 즉, 가중치를 결정하는, 즉 노드가 얼마나 중요한지 결정하는 것을 Dense층에서 결정합니다.
두번째 Dense층 [출력 Dense층]을 10개로 합니다.
마지막 layer는 소프트맥스 층입니다. 총 10개의 분류 class가 있고 그중에 어떤 카테고리를 이미지가 가지는지 알때, 확률값을 이용할 수 있습니다. 이때, 사용되는 층은 소프트맥스층입니다. 10개의 노드는 모두 확률값을 가지고 각 확률값을 더하면 1이 됩니다. 가장 큰 값을 가지는 class가 이미지의 분류 결과가 되겠습니다.
2. parameter 조정[compile->fit]
모델을 fit하는 단계로 모델을 학습시키는 단계입니다. 학습시킨다는 의미는 이전포스팅을 보면 알 수 있듯이 모델의 parameter를 더 정확한(손실함수의 값이 줄어드는 방향) 예측모델이 되는 방향으로 조절하는 것입니다.
모델을 훈련데이터에 맞춰주는 작업을 하는데 이때, 몇번을 학습시킬지 결정할 수 있습니다[fit]
.=> tensorflow의 fit을 활용할 수 있습니다.
model.fit(train_images, train_labels, epochs=10)
이전에 당연히 모델을 결정해야합니다. [compile]
모델 결정은 1. 손실함수, 2. 옵티마이저, 3. 메트릭을 결정해야합니다.
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
model을 결정할때 우리는 compile을 한다고 합니다.
앞서 층 설정 단계에서 우리는 어떻게 x라는 하나의 이미지 데이터에서 class를 결정하는지 알아보았습니다. compile단계에서는 마지막 Dense층에서 예측한 y label 죽, 어떤 class에 속하는지 예측한 결과가 정확한지 판단하고 정확하지 않으면 그 모델을 올바른 방향으로 조정합니다. 이때, 얼만큼의 오류가 있는지 판단하고 이러한 오류를 줄이기 위해서 오류를 최소화하는 방향으로 parameter를 업데이트합니다.
여기서는 실제값과 예측값의 차이를 알기위해서 "crossentorpy"이라는 손실함수를 사용하고 그 결과를 줄이는 방향으로 모델을 업데이트하기 위해서 "adam"이라는 옵티마이저를 사용합니다.
업데이트는 위에서 모델을 fit하면서 훈련을 진행한다고 했는데 그 때마다 업데이트가 되고 loss를 줄이는 방향으로 모델의 parameter가 조정됩니다.
4. 모델의 정확도 평가[evaluate]
모델의 정확도를 평가하기 위해서 test dataset을 통해서 모델이 과연 정확한가를 판단합니다.
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
테스트세트의 정확도가 훈련 세트의 정확도보다 조금 낮다는 것을 tensorflow 사이트에서 확인이 가능하며 이유는 "과적합"이 발생했기 때문입니다. 훈련 모델이 훈련 데이터셋에 치우쳐져서 훈련데이터라는 새로운 데이터에서 성능이 낮아진다는 것을 의미합니다. 이를 피하기 위한 전략이 있습니다.
과대적합과 과소적합 | TensorFlow Core
도움말 Kaggle에 TensorFlow과 그레이트 배리어 리프 (Great Barrier Reef)를 보호하기 도전에 참여 과대적합과 과소적합 Note: 이 문서는 텐서플로 커뮤니티에서 번역했습니다. 커뮤니티 번역 활동의 특성
www.tensorflow.org
[참고 사이트]
완전 연결 계층, Fully connected layer
(JY) Keras 사용해보기 1. What is keras? 케라스(Keras)는 텐서플로우 라이버러리 중 하나로, 딥러닝 모델 설계와 훈련을 위한 고수준 API이다. 사용자 친화적이고 모델의 구성이 쉽기 때문에 기본 이미지
dsbook.tistory.com
를 참고하면 이해가 빨리 될 것 같습니다
'데이터분석 및 인공지능' 카테고리의 다른 글
영화 리뷰를 사용한 텍스트 분류[기본 텍스트 분류] (0) | 2021.12.10 |
---|---|
1. 의류 이미지 분류 (0) | 2021.11.03 |
강화학습 (0) | 2021.06.28 |
순환 신경망을 활용한 문자열 생성 (0) | 2021.03.29 |
csv파일을 활용한 데이터처리 (0) | 2021.03.29 |
- Total
- Today
- Yesterday
- 온라인프로필 만들기
- 기본 텍스트 분류
- 백트래킹(1)
- 핀테크 트렌드
- 백준 15650 파이썬
- 백준 10866
- c++덱
- 백준 4963
- 영화 리뷰 긍정 부정 분류
- 백준 11053 파이썬
- 파이썬 알아두면 유용
- LAMBDA
- 효율적인방법찾기
- 11053 백준
- CSMA/CD란?
- mm1queue
- CREATE ASSERTION
- 4963 섬의개수
- 백준 숫자놀이
- 모듈 사용법
- 딥러닝입문
- 기사작성 대외활동
- stack 컨테이너
- 10866 백준
- DRF 회원관리
- 13886
- 코딩월드뉴스
- 시뮬레이션 c
- 소프트웨어공학설계
- 스택 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |