Python/Keras
表示
< Python
概要
[編集]Keras(ケラス)は、Pythonで実装された高水準のニューラルネットワークAPIです。2015年にフランソワ・ショレ(François Chollet)によって開発され、2017年にGoogleのTensorFlowプロジェクトに正式に統合されました。現在はTensorFlowの公式の高レベルAPIとして位置づけられています。
特徴
[編集]- 直感的なAPI設計: 複雑なニューラルネットワークモデルを簡潔に記述可能
- モジュール性: レイヤー、損失関数、最適化手法などを柔軟に組み合わせ可能
- 拡張性: カスタムコンポーネントの追加が容易
- 研究と実務の両立: プロトタイピングから本番デプロイメントまでをサポート
インストールと環境設定
[編集]基本的なインストール
[編集]TensorFlowとKerasは以下のコマンドでインストールできます:
pip install tensorflow
注: Keras 2.4.0以降、KerasはTensorFlowに完全に統合されており、tensorflow.keras
として提供されています。
GPUサポート
[編集]GPU対応版をインストールする場合:
pip install tensorflow[gpu]
基本的な使用方法
[編集]モデル構築の2つのAPI
[編集]Sequentialモデル
[編集]線形的なレイヤー構成に適しています:
import tensorflow as tf from tensorflow import keras model = keras.Sequential([ keras.layers.Dense(128, activation='relu', input_shape=(784,)), keras.layers.Dropout(0.2), keras.layers.Dense(10, activation='softmax') ])
Functional API
[編集]複雑なモデルアーキテクチャの構築に適しています:
inputs = keras.Input(shape=(784,)) x = keras.layers.Dense(128, activation='relu')(inputs) x = keras.layers.Dropout(0.2)(x) outputs = keras.layers.Dense(10, activation='softmax')(x) model = keras.Model(inputs=inputs, outputs=outputs)
モデルのコンパイルと訓練
[編集]# モデルのコンパイル model.compile( optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'] ) # モデルの訓練 history = model.fit( x_train, y_train, batch_size=32, epochs=10, validation_split=0.2 )
高度な機能
[編集]カスタムレイヤー
[編集]独自のレイヤーを定義できます:
class CustomLayer(keras.layers.Layer): def __init__(self, units=32): super(CustomLayer, self).__init__() self.units = units def build(self, input_shape): self.w = self.add_weight( shape=(input_shape[-1], self.units), initializer='random_normal', trainable=True ) self.b = self.add_weight( shape=(self.units,), initializer='zeros', trainable=True ) def call(self, inputs): return tf.matmul(inputs, self.w) + self.b
コールバック
[編集]訓練プロセスをカスタマイズできます:
# モデルのチェックポイント保存 checkpoint_cb = keras.callbacks.ModelCheckpoint( 'model.h5', save_best_only=True ) # 早期終了 early_stopping_cb = keras.callbacks.EarlyStopping( patience=10, restore_best_weights=True ) history = model.fit( x_train, y_train, callbacks=[checkpoint_cb, early_stopping_cb] )
モデルの保存と読み込み
[編集]完全なモデルの保存
[編集]# SavedModel形式で保存 model.save('path/to/model') # HDF5形式で保存 model.save('model.h5') # モデルの読み込み model = keras.models.load_model('path/to/model')
重みの保存
[編集]# 重みの保存 model.save_weights('weights.h5') # 重みの読み込み model.load_weights('weights.h5')
ベストプラクティス
[編集]- TensorFlow 2.x スタイルを採用: 即時実行モードを使用し、
tf.keras
をインポート - メモリ管理: 大規模データセットには
tf.data.Dataset
を使用 - GPU利用: バッチサイズをGPUメモリに合わせて調整
- 正則化: ドロップアウトやバッチ正規化を適切に使用
- モデル評価: 交差検証を実施し、過学習を監視