Kerasの使い方:Pythonでディープラーニングモデルをトレーニングする方法
Kerasは、ONEIROS(Open-ended Neuro-Electronic Intelligent Robot Operating System)というプロジェクトの研究の一環として開発されました。KerasはPythonで書かれたディープラーニングAPIであり、機械学習の問題を効率的に解決するための生産性の高いインターフェースを備えた高レベルAPIです。TensorFlowフレームワークの上で動作し、迅速な実験を支援するために設計されています。機械学習ソリューションの開発とカプセル化に不可欠な抽象化機能とビルディングブロックを提供します。
Kerasの主な特徴
Kerasは高いスケーラビリティを持ち、クロスプラットフォームに対応しています。つまり、TPUやGPUクラスタ上でも実行可能です。さらに、KerasモデルはWebブラウザやモバイルデバイス上で動作するようにエクスポートすることもできます。
KerasはTensorFlowパッケージにすでに含まれており、以下のコードでアクセスできます。
import tensorflow from tensorflow import keras
Functional APIとは
KerasのFunctional APIを使用すると、Sequential APIで作成したモデルよりも柔軟なモデルを構築できます。Functional APIは非線形トポロジーを持つモデルに対応でき、レイヤーの共有や複数の入出力を持つモデルの構築が可能です。ディープラーニングモデルは通常、複数のレイヤーを含む有向非巡回グラフ(DAG)であり、Functional APIはこのレイヤーグラフの構築を支援します。
Google Colaboratoryでの実行環境
本記事のコードはGoogle Colaboratoryで実行しています。Google Colab(Colaboratory)はブラウザ上でPythonコードを実行できるサービスで、設定不要かつ無料でGPU(Graphics Processing Unit)を利用できます。ColaboratoryはJupyter Notebookをベースに構築されています。
モデルトレーニングのコード例
以下は、モデルをプロットし、CIFAR-10データセットを使ってトレーニングを行うコード例です。
print("モデルをプロットしています")
keras.utils.plot_model(model, "my_resnet.png", show_shapes=True)
print("データを訓練用とテスト用に分割します")
(x_train, y_train), (x_test, y_test) = keras.datasets.cifar10.load_data()
print("データ型をfloatに変換します")
x_train = x_train.astype("float32") / 255.0
x_test = x_test.astype("float32") / 255.0
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)
print("モデルをコンパイルしています")
model.compile(
optimizer=keras.optimizers.RMSprop(1e-3),
loss=keras.losses.CategoricalCrossentropy(from_logits=True),
metrics=["acc"],
)
model.fit(x_train[:2000], y_train[:2000], batch_size=64, epochs=2, validation_split=0.2)コード引用元:https://www.tensorflow.org/guide/keras/functional
実行結果
モデルをプロットしています データを訓練用とテスト用に分割します Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz 170500096/170498071 [==============================] - 2s 0us/step データ型をfloatに変換します モデルをコンパイルしています Epoch 1/2 25/25 [==============================] - 9s 332ms/step - loss: 2.3163 - acc: 0.1028 - val_loss: 2.2962 - val_acc: 0.1175 Epoch 2/2 25/25 [==============================] - 12s 492ms/step - loss: 2.3155 - acc: 0.1175 - val_loss: 2.2606 - val_acc: 0.1200 <tensorflow.python.keras.callbacks.History at 0x7f48d3ecfb00>
コードの解説
入力データを訓練用データセットとテスト用データセットに分割します。
データ型を「float」型に変換します。ピクセル値を255で割ることで正規化も行っています。
「to_categorical」メソッドにより、ラベルをOne-hotエンコーディング形式に変換します。
「compile」メソッドを使用してモデルをコンパイルします。ここでは最適化アルゴリズムとしてRMSprop、損失関数としてCategoricalCrossentropyを指定しています。
「fit」メソッドを使用して、モデルを訓練データに適合させます。バッチサイズ64、エポック数2、検証データ分割率20%で学習を実行します。
-
Kerasのplot_model関数を使ってモデル構造を可視化する方法【Python】
Kerasはギリシャ語で「角(ホーン)」を意味します。ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System)というプロジェクトの研究の一環として開発された、Pythonで書かれたディープラーニングAPIです。機械学習の問題解決を効率的に行うための、生産性の高いインターフェースを備えた高水準APIとなっています。 KerasはTensorFlowフレームワークの上で動作し、素早く実験を行えるよう設計されています。機械学習ソリューションの開発とカプセル化に不可欠な抽象化機能やビルディングブロックを提供してくれる
-
Kerasを使ってPythonでモデルをプロットする方法をわかりやすく解説
TensorFlowとはTensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで対応しており、複雑な数値計算を高速に実行するための最適化技術が数多く組み込まれています。TensorFlowにおける「テンソル(Tensor)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ