일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- requests
- grad-cam
- 공분산
- GCP
- login crawling
- flask
- API Gateway
- youtube data
- UDF
- BigQuery
- API
- GenericGBQException
- Retry
- correlation
- chatGPT
- hadoop
- integrated gradient
- 유튜브 API
- top_k
- XAI
- Airflow
- gather_nd
- Counterfactual Explanations
- airflow subdag
- subdag
- TensorFlow
- session 유지
- spark udf
- tensorflow text
- 상관관계
- Today
- Total
데이터과학 삼학년
Keras API 간단 정리 (From. Google Developers ) 본문
이글은 google developers에서 퍼온 글임을 밝힙니다.
Sequential API
ML을 배우는 학생이라면 tf.keras Sequential API로 시작하실 것을 권장합니다. 직관적이고 간결하며 사실상 ML 문제의 95% 정도에 적합한 API이기 때문입니다. 이 API를 사용하면 대략 10줄 정도의 코드만으로 생애 최초의 신경망 프로그램을 작성하실 수 있을 겁니다.
단 몇 줄의 코드로 작성한 생애 최초의 신경망을 훈련하기 위한 예제를 보려면 여기 를 클릭하세요.
모델을 정의하는 가장 일반적인 방법은 우리가 딥 러닝에 대해 생각할 때 흔히 사용하는 멘탈 모델에 해당하는 계층 그래프를 빌드하는 방법입니다. 가장 단순한 유형의 모델은 계층 쌓기입니다. 다음과 같이 Sequential API를 사용하여 그러한 모델을 정의할 수 있습니다.
'ML 학습 및 사용' 섹션 아래의 tensorflow.org/tutorials에서 Sequential API를 사용하는 더 많은 예제를 찾으실 수 있습니다.
Sequential API를 사용하여 Fashion MNIST 데이터세트로 첫 신경망을 훈련하는 방법을 안내하는 가이드를 보려면 여기 를 클릭하세요.
Functional API
물론, 순차적 모델은 임의의 모델을 표현할 수 없는 계층으로 구성된 단순한 스택입니다. 다중 입력 및 다중 출력 모델, 공유 계층이 있는 모델, 잔류 연결이 있는 모델을 비롯한 복잡한 토폴로지를 정의할 수 있게 해주는 Functional API를 사용하여 더욱 발전된 모델을 빌드할 수 있습니다.
Functional API로 모델을 빌드할 때 계층은 (텐서에서) 호출 가능하고 텐서를 출력으로 반환합니다. 그러면 이러한 입력 텐서와 출력 텐서를 사용하여 모델을 정의할 수 있습니다. 예를 들면 다음과 같습니다.
위와 똑같은 간단한 명령어를 사용하여 이러한 모델을 컴파일하고 훈련할 수 있습니다. 여기에서 Functional API에 대해 자세히 알아볼 수 있습니다.
Model Subclassing API
Model Subclassing API를 사용하여 완전 맞춤형 모델을 빌드할 수 있습니다. 클래스 메서드 본문에 자체적인 포워드 패스를 다음과 같은 스타일로 명령형으로 정의합니다.
이러한 모델은 더 유연하긴 하지만 디버그하기는 더 어려울 수 있습니다. 세 가지 유형의 모델은 전부 앞의 예제에 나오는 간단한 compile 및 fit 명령어를 사용하여 컴파일 및 훈련 가능하거나, 완전한 제어를 위해 자체적인 맞춤 훈련 루프를 작성할 수 있습니다.
Model Subclassing 스타일의 예제를 더 보려면 아래 링크를 확인하거나 tensorflow.org/tutorials를 방문하세요('research and experimentation' 섹션 참조).
Attention을 이용한 Neural Machine Translation. Model Subclassing API를 사용하여 구현
GAN. Model Subclassing API를 사용하여 구현
내 연구가 이런 스타일과는 맞지 않을 때는 어떻게 하나요?
tf.keras가 자신의 응용 분야에 대해서는 제한적인 것으로 드러날 경우에 선택할 수 있는 여러 가지 옵션이 있습니다. 다음과 같은 방법을 사용할 수 있습니다.
- tf.keras.layers를 Keras 모델 정의와는 따로 사용하고 자체적인 그라데이션 및 훈련 코드를 작성합니다. 마찬가지로 tf.keras.optimizers, tf.keras.initializers, tf.keras.losses 또는 tf.keras.metrics를 따로 독립적으로 사용할 수 있습니다.
- tf.keras를 완전히 무시하고 하위 수준 TensorFlow, Python 및 AutoGraph를 사용하여 원하는 결과를 얻습니다.
이는 전적으로 개발자 본인에게 달린 문제입니다! 참고로, tf.layers에 있는 비 객체지향형계층은 지원 중단될 예정이고, (tf.contrib.slim 및 tf.contrib.learn과 같은 상위 수준 API를 포함한) tf.contrib.*는 TF 2.0에서는 사용할 수 없을 것입니다.
Estimators는 어떻게 되나요?
Estimators는 Google 내부뿐 아니라 더욱 폭넓은 TensorFlow 커뮤니티 내에서도 모두 광범위하게 사용됩니다. Linear Classifier, DNN Classifier, Combined DNN Linear Classifier(Wide and Deep Models라고도 함), Gradient Boosted Trees를 포함한 여러 가지 모델이 Premade Estimators라는 패키지로 제공되었습니다. 이러한 모델은 바로 프로덕션 환경에서 사용 가능하고 폭넓게 배포되며, 이 모든 이유로 Premade Estimators를 포함한 Estimator API가 TensorFlow 2.0에 포함될 예정입니다.
Premade Estimators의 사용자 입장에서는 Keras와 eager 실행에 새롭게 집중하는 데 따른 영향은 최소한일 것입니다. API 외관은 똑같이 유지하면서도 Premade Estimators의 구현을 변경할 수 있습니다. 우리는 또한 Premade Estimators로 구현되는 모델의 Keras 버전을 추가하는 작업도 수행할 예정이며, 대규모 프로덕션 요구 사항을 더욱 원활히 충족시키기 위해 Keras를 확장할 것입니다.
그렇긴 하지만, 맞춤 아키텍처를 기반으로 작업 중인 분께는 Estimator 대신 tf.keras를 사용하여 모델을 빌드하실 것을 제안합니다. Estimators가 필수적인 인프라를 이용해 작업하는 분이라면 우리가 TensorFlow 생태계 전반에 걸쳐 Keras가 효과를 발휘하도록 작업하는 동안 model_to_estimator()를 사용하여 모델을 변환할 수 있습니다.
'Machine Learning' 카테고리의 다른 글
[TF 2.2] Text Vectorization Layer 적용된 모델의 예측 방법 (feat.GCP) (0) | 2020.07.27 |
---|---|
[TF 2.2] tf.keras.layers.experimental.preprocessing.TextVectorization 한계와 해결 방법 (0) | 2020.07.17 |
[TF.2.x] Keras 모델의 predict output을 사용자가 커스텀하는 방법 (0) | 2020.07.09 |
[TF 2.x] tf.keras prediction 결과 custom하기(feat. GCP ai-platform) (0) | 2020.07.08 |
Text classification using GCP ai-platform (0) | 2020.06.26 |