TensorFlow에서는 라이브러리의 estimator 클래스에 포함된 DNNClassifier 메서드를 사용하여 추정기(Estimator)의 인스턴스를 손쉽게 생성할 수 있습니다.
사전 이해: TensorFlow와 Keras
이 글에서는 Keras Sequential API를 사용합니다. Sequential API는 여러 층(layer)을 순서대로 쌓아 올리는 순차 모델을 구축할 때 유용하며, 각 층은 정확히 하나의 입력 텐서와 하나의 출력 텐서를 가집니다.
적어도 하나의 합성곱(convolutional) 층을 포함하는 신경망을 합성곱 신경망(CNN)이라고 하며, 이를 활용해 학습 모델을 만들 수 있습니다.
또한 TensorFlow Text는 시퀀스 모델링 전처리에 활용할 수 있는 텍스트 관련 클래스와 연산(ops) 모음으로, TensorFlow 2.0과 함께 사용할 수 있습니다.
실행 환경: Google Colaboratory
아래 코드는 Google Colaboratory(Colab)에서 실행됩니다. Google Colab은 브라우저에서 바로 Python 코드를 실행할 수 있도록 지원하며, 별도의 설정이 필요 없고 GPU(그래픽 처리 장치)에 무료로 접근할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되었습니다.
추정기(Estimator)란?
Estimator는 완전한 모델에 대한 TensorFlow의 고수준(high-level) 표현 방식입니다. 손쉬운 확장성과 비동기 학습(asynchronous training)을 지원하도록 설계되었습니다.
이번 예제에서는 붓꽃(Iris) 데이터셋을 사용해 모델을 학습시킵니다.
코드 예제
print("Build a DNN that has 2 hidden layers with 30 and 10 hidden nodes each")
classifier = tf.estimator.DNNClassifier(
feature_columns=my_feature_columns,
hidden_units=[30, 10],
n_classes=3)코드 출처 − https://www.tensorflow.org/tutorials/estimator/premade#first_things_first
출력 결과
Build a DNN that has 2 hidden layers with 30 and 10 hidden nodes each
INFO:tensorflow:Using default config.
WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmpdh8866zb
INFO:tensorflow:Using config: {'_model_dir': '/tmp/tmpdh8866zb', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': allow_soft_placement: true
graph_options {
rewrite_options {
meta_optimizer_iterations: ONE
}
}
, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_device_fn': None, '_protocol': None, '_eval_distribute': None, '_experimental_distribute': None, '_experimental_max_worker_delay_secs': None, '_session_creation_timeout_secs': 7200, '_checkpoint_save_graph_def': True, '_service': None, '_cluster_spec': ClusterSpec({}), '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}설명
- 붓꽃(Iris) 문제는 대표적인 분류(classification) 문제로 다루어집니다.
- TensorFlow에는 다양한 사전 제작(pre-made) 분류 Estimator가 포함되어 있으며, 대표적인 것들은 다음과 같습니다:
tf.estimator.DNNClassifier— 다중 클래스 분류를 수행하는 딥러닝(deep) 모델용tf.estimator.DNNLinearCombinedClassifier— wide & deep 결합 모델용tf.estimator.LinearClassifier— 선형 모델 기반 분류기용
- 붓꽃 문제에서는
tf.estimator.DNNClassifier를 사용하여 심층 신경망(DNN) 기반 분류 모델을 구축합니다.