TensorFlowとPythonで推定器(Estimator)をインスタンス化する方法を解説
TensorFlowで推定器(Estimator)をインスタンス化するには、TensorFlowライブラリのestimatorクラスに含まれるDNNClassifierメソッドを使用します。
Estimatorとは何か
Estimatorは、TensorFlowにおける完全なモデルの高レベルな抽象表現です。スケーリングや非同期学習を容易に行えるよう設計されており、モデルの構築・学習・評価のプロセスをシンプルにまとめることができます。本記事では、アヤメ(Iris)データセットを用いて分類モデルを学習させる例を紹介します。
なお、コードの実行にはGoogle Colaboratoryを使用しています。Google Colabはブラウザ上でPythonコードを実行できる環境で、面倒な設定が不要であり、GPU(グラフィックス処理装置)への無料アクセスも可能です。ColaboratoryはJupyter Notebookをベースに構築されています。
また、TensorFlow TextにはTensorFlow 2.0で利用できるテキスト関連のクラスやオペレーションがまとめられており、系列モデリングの前処理などにも活用できます。
実装例:DNNClassifierによるインスタンス化
以下のコードでは、隠れ層を2つ持ち、それぞれ30個と10個のノードを持つDNN(深層ニューラルネットワーク)を構築しています。少なくとも1つの層を含むニューラルネットワークを畳み込み層と呼ぶこともあり、このようなネットワーク構造を使って学習モデルを構築します。モデルの構築には、単純な層のスタックを扱うのに適したKeras Sequential APIも利用できます。Sequential APIでは、すべての層が入力テンソルを1つ、出力テンソルを1つだけ持つプレーンな積み重ね構造のモデルを作成できます。
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)の問題は、多クラス分類問題として扱われます。
- TensorFlowには、すぐに使える事前定義済みの分類用Estimatorが多数用意されています。主なものは以下の通りです。
tf.estimator.DNNClassifier:多クラス分類を行う深層モデル向けの分類器tf.estimator.DNNLinearCombinedClassifier:ワイド&ディープモデル向けの分類器tf.estimator.LinearClassifier:線形モデルに基づく分類器
- アヤメの分類問題では、これらの中から
tf.estimator.DNNClassifierを使用します。
-
PythonとTensorFlowで2つの行列を乗算する方法を解説
TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために利用されています。研究用途から本番運用まで幅広く使われており、複雑な数学的演算を高速に処理できる最適化技術を備えているのが特長です。 その理由の一つは、NumPyと多次元配列を基盤としている点にあります。この多次元配列は「テンソル」と呼ばれます。TensorFlowは深層ニューラルネットワークの構築をサポートし、高いスケーラビリティを持ち、人気のデータセットが多数付属しています。また、GPUに
-
PythonとTensorFlowを使って2つの行列を加算する方法
TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために広く利用されています。研究用途から本番環境まで幅広い場面で活用されており、複雑な数値計算を高速に実行するための最適化技術が多数搭載されています。この高い処理性能は、NumPyおよび多次元配列の仕組みによって支えられています。これらの多次元配列は「テンソル(tensor)」と呼ばれます。TensorFlowは深層ニューラルネットワークの構築を強力にサポートしており、高い拡張性を持つほか、代表的な