TF Pattern Design (Week3)
2018년 06월 19일 | Doyoung Gwak

Reviewed and edited by Jaewook Kang

발표1: 잘쓰는 tf API 설명

Speaker : 이준호

tf.layers


레이어를 구성할때 사용하는 high-level api set

- 레이어 구성에 있어서 `1)variable의 생성``2)연결`을 한 줄의 api로 구현가능
- variable에 직접 접근이 필요한 경우 `get_collection()`을 사용
- 여기서 `get_collection()`이란 
- 복잡한 구현은 `tf.layers`를 쓰고, convolution을 커스텀해서 만들고 싶을땐 `tf.nn` 사용
    - 사실 거의 `tf.layers`로 해결됨 

tf.estimator


구글에서 야심차게 준비하고 있는 scikest learn와 같은 정말 high-level api

- 1) 모델을 만드는 것에서 부터 
- 2) loss + optimizer를 설정
- 3) training + inference 하는 것 까지 통합api로 지원함

단점은 항상 있음!

- 굉장히 정형화 된 모델에 대해서만 지원 (현재까지는!)
- 커스터 마이제이션이 번거로움 (구글에서 원하는 포맷에 맞게 코딩해야함)
- tensorboard과 호환성이 매우 좋음

tf.train & tf.test


training & testing 할때 필요한 api를 모아놓음

TFRecord


데이터 TF에서 빠르게 로드 할 수 있는 binary 포맷. 데이터의 io시간을 단축해서 트레이닝시 시간을 좀 단축시켜보겠다는 의미

- 바이너리로 저장하기때문에 속도가 빨라짐
- 데이터셋 관리하기가 편함, 용량도 작아짐
- TFrecord로 변환할 때 시간이 어느정도 걸림
- tf.Session()안에서 tf.data api에 의해서 로드
- 옵션을 써야함(`gz` 파일로 압축시키는 옵션을 쓰면 용량을 조금 줄일 수 있음)
    ☞ 압축된 `gz`파일 그대로 사용 가능(`tfrecord`가 디코딩해줌)

단점이 있음

- 단일 이미지당 어느정도 이상 사이즈가 커지면(128*128*128~) 에러가 나옴!!! 헐.
- 변환시키기가 익숙하기 전까지 복잡
- `hdf5` 포멧을 이렇게 쉽게 접근할 수 있는데 (`hdf_file['folder1']['inner_folder']`), `tfrecord`는 이렇게 편하지 않음.
- `tfrecord` 파일 이름을 디렉토리명처럼 만드는 편법(`data/image`, `info/config`...)
- 직접 들어갈 수 없음.
- 옵션은 한 파일이 있을때 섞냐, 안 섞냐 이것밖에 안됨.
- 전체 데이터가 몇개인지 알려면 `tf.python_io.tf_record_iterator`를 돌려봐야 알 수 있음.

tf.data


준호님 여기 내용 추가 필요

tf.gfile


python의 os, copy, glob, exists 같은 모듈을 tf용으로 만든것

발표2: TF 추상화와 간소화, 모델 엑스포트와 서빙

Speaker : 이규복

Slide

요약


TFLearn

- Tensorflow API와 유사함 
- python 기본 array를 사용 
- `ckpt`로 저장 가능(frozen graph로 만들 수 있는것) 

tf.keras

- `TFLearn`과 비슷함 
- 절차형/함수형 원하는 스타일로 코드 짤 수 있음? 
- Numpy를 사용 
- `hdf5` 포멧으로 저장 가능 
- 실제 Keras에 api가 `tf.keras`에는 없을 수도 있음 

TF.Slim

- `tf.keras``tf.slim`는 둘 다 내부적으로 Tensorflow를 사용함 
- cnn에 특화된 라이브러리 
- 깊은 layer를 쌓을때 간편하게 가능 
- `tf.nn tf.contrib.framework` 합친.. 
- 미리 `slim`으로 학습된 모델 사용할 수 있음 
- `with` 구문으로 `arg_scope`를 만들 수 있음 

Issues



Doyoung Gwak(곽도영)

MoTLab에서 iOS 개발을 담당하고 있고 모바일용 머신러닝 기술에 관심이 많습니다. 지금까지는 iOS 앱개발에 빠져있었으나 최근에는 머신러닝에 흥미가 많습니다.