복잡하고 까다로웠던 Tensorflow 1.x버전에 비해 2.x는 구현이 많이 쉬워졌다고 합니다. 변수 초기화, 파라미터의 차원 설정하기 등 코드가 많이 간결해졌다고 하는데요, 하지만 그 간결해진 코드 내에서 tensorflow가 어떻게 작동하는지 공부하기 위해 1.x로 실습한 내용입니다.
mnist data set을 통한 deep learning classification 흐름
수업시간에 사용했던 data set은 손글씨 classification 이고, 전체 수업내용 코드는 github에 올려두었습니다. (link)
전체적인 코드의 흐름은 전처리(data normalization, target value(label)의 one-hot encoding), 모델 학습 및 테스트였습니다. 1.x 에서는 파라미터 초기화 코드 및 tf.Session(), epoch input 횟수를 직접 구현 및 실행해주어야 한다는 특징이 있었습니다. 그 외에도 2.x에서는 accuracy score도 직접 정의하여 계산하고, dropout 함수에서 랜덤으로 동작하지 않을 퍼셉트론의 비율을 인수로 받는다던지(1.x에서는 살려줄 비율 지정) 하는 차이를 확인하였습니다
용어 정리
placeholder (document ) 변수의 타입을 미리 설정해놓고 필요한 변수를 나중에 받아서 실행하는 것 (수업에서는 input data의 shape을 정수로 지정해주지 않고, batch size에 따라 input shap이 달라질 수 있도록 비워놓는 '접시' 같은 것으로 이해함)
분류에서의 cross entrpy ( 참고: 유투브 혁펜하임) 엔트로피란: 정보를 표현하는 데 필요한 최소 평균 자원량 ( 최소 자원량 = 0 or 1의 길이, bits의 단위, by shanon) 빈도가 높은 문자를 짧은 bit로 표현함으로써 데이터의 길이를 최소화시키는 것이 좋다.