딥러닝 텐서플로 교과서 - 2장

Jajuna_99·2022년 10월 1일
0

2장 실습 환경 설정과 텐서플로 기초

실습 환경 설정은 거의 설명 안 하다시피 할 예정이다! 텐서플로 위주로!

텐서플로 개요 (p.34)

텐서플로(TensorFlow) : 데이터 흐름 그래프를 사용하여 데이터의 수치 연산을 하는 오픈 소스 소프트웨어 프레임워크

  • 넘파이, 케라스, 맷플로릿 같은 기본 라이브러리는 물론 기본적인 수준의 데이터셋과 여러 다양한 서비스들이 있다.

  • 텐서플로의 여러 특징과 장점이 (p.35)에 나오는데 개인적으로는 복잡한 수학 수식들을 일일히 코딩 안해도 되는 부분이 너무 좋은것 같다.

  • 텐서플로 1버전과 2버전 차이점과 개선점도 (p.36)에 자세히 나온다. 간략하게 여러 웹 프레임워크 지식도 어느정도 갖춰야 사용하기 쉬웠던, 다시 말해 좀 복잡했던 텐서플로를 2버전에서 간략한 문법으로 바꿨다.

  • 생성된 모델을 텐서플로 허브(TensorFlow Hub)에 개시하여 재사용도 가능하다고 한다. -> 사용자에게 웹이나 모바일로 서비스를 배포할 수 있는 환경도 제공한다고 한다.

텐서플로 2.x 기초 문법 (p.38)

데이터 준비
크게 판다스와 텐서플로로 데이터를 호출하는 방법이 있다고 한다.

  • 데이터가 이미지일 경우 분산된 파일엥서 데이터를 읽은 후 전처리를 하고 배치 단위로 분할하여 처리한다.
  • 데이터가 텍스트일 경우 임베딩 과정을 거쳐 서로 다른 길이의 시퀸스를 배티 단위로 분할하여 처리한다.

임의 데이터셋, 텐서플로 데이터셋, 케라스 데이터셋, 인터넷에 있는 데이터셋 사용하는 방법 (p.39)

모델 정의 하는 방법 (p.40) 크게 초보자가 사용하는 Sequential API, 전문가들이 사용하는 Functional API, Model Subclassing API가 있다.

  • Sequential API : 최상위에 사용자가 쉽게 사용할 수 있는 케라스, 그 밑에 텐서플로 런타임을 이용하여 동작한다. -> 단순히 층을 여러개 쌓는 형태라 복잡한 모델을 생성할 때는 한계가 있다.

  • Functional API : 입력과 출력을 사용자가 정의, 모델 전체를 규정할 수 있다. -> 다중입력과 출력 등

  • Model Subclassing API : Functional API와 본질적인 차이는 없지만, 사용자가 모델을 자유롭게 정의할 수 있다. (밑바닥처럼...)

모델 컴파일 함수

model.compile(optimizer = 'adam', loss = 'sparse_categorical_crossentropy',
			  metrics = ['accuracy'])
  • 보다시피 매개변수는 '최적화 기법', '손실 함수', '지표' 이다.

모델 훈련 함수

model.fit(x_train, y_train, epochs = 10, batch_size = 100, validation_data=(x_test, y_test), 
	      verbose =2)
  • 매개변수는 '입력 데이터', '결과(label) 데이터', 학습 데이터 반복 횟수, 한 번에 학습할 때 사용하는 데이터 개수, 검증 데이터(각 에포크마다 검증 데이터의 정확도도 함께 출력), 학습 진행 상황 모니터 지정값(1로 설정하면 진행 상황 모니터링 가능) -> 영어만 읽어도 대충 이해할 수 있겠다.

모델 평가 함수

model.evaluate(x_test, y_test, batch_size=32)
  • '검증 데이터셋', '결과 데이터셋', '한 번에 학습할 때 사용하는 데이터 개수'

훈련 과정 모니터링

log_dir = "logs/fit/"
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)

model.fit(x_train, y_train, epochs = 10, batch_size = 100, validation_data=(x_test, y_test), 
		  callbacks=[tensorboard_callback])
  • log_dir=log_dir : 로그가 저장될 디렉터리 위치 지정
  • histogram_freq=1 : 모든 에포크마다 히스토그램 계산 (분포도 확인용), 기본값은 0이고 히스토그램 비활성화
  • callbacks=[tensorboard_callback] 해당 매개변수를 함수 안에 넣자!
  • 텐서보드에 모니터링 하는 방법도 있다. (p.46)

모델 사용 함수

model.predict(y_test)
  • 훈련된 모델을 사용하여 실제 예측을 진행할 때 사용하는 함수

실습 환경 설정 (p.47)

아나콘다와 가상환경 설치 및 설명 (가상 환경은 정말 책마다 나온다. 한 번 날 잡아서 정리해봐야지)

텐서플로 2 코드 맛보기 (p.55)

자동차 관련 파일로 직접 실습해보는 장이다.

  • 코드 설명은 거의 없고 실행하고 나온 결과 위주로 설명해주는 말 그대로 맛 보기 절이다.
  • 내 깃헙에 구현해 놓았다.

책에서 좀 크게 다룬 성능 평가 지표를 살펴보자.

그 전에 성능 평가 지표에 들어가 '변수들'부터 봐보자.

  • True Positive : 모델이 '1'을 예측하고 실제값도 '1'인 경우
  • True Negative : 모델이 '0'을 예측하고 실제값도 '0'인 경우
  • False Positive : 모델이 '1'을 예측하고 실제값은 '0'인 경우, Type I 오류
  • False Negative : 모델이 '0'을 예측하고 실제값도 '1'인 경우, Type II 오류

이어서 성능 평가 지표

  • 정확도 (accuracy) : 정답을 맞힌 건수의 비율
    • acc=acc =TP+TNTP+TN+FP+FNTP + TN \over TP + TN + FP + FN
  • 재현율 (recall) : 실제 정답이 '1'인 경우에 모델도 '1'로 예측한 비율 -> 처음부터 데이터가 1일 확률이 적을 때 사용하면 좋다.
    • recall=recall =TPTP+FNTP \over TP + FN
  • 정밀도 (precision) : 모델이 '1'이라고 예측한 것 중에서 실제 정답이 '1'인 비율
    • precision=precision =TPTP+FPTP \over TP + FP
  • F1-스코어 : 정밀도와 재현율의 트레이드오프 관계 문제를 해결하고자 조화 평균(harmonic mean)을 이용한 평가 지표
    • F1-socre =2= 2 precision×recallprecision+recall\displaystyle {precision \times recall \over precision + recall}

요약

생각했던거 보다 훨씬 강력한 프레임워크인 것 같아 공부 시작하길 잘 했단 생각이 막 든다.

profile
Learning bunch, mostly computer and language

0개의 댓글