コンテンツにスキップ

Python/Keras

出典: フリー教科書『ウィキブックス(Wikibooks)』

概要

[編集]

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メモリに合わせて調整
  • 正則化: ドロップアウトやバッチ正規化を適切に使用
  • モデル評価: 交差検証を実施し、過学習を監視

外部リンク

[編集]
Wikipedia
Wikipedia
ウィキペディアKerasの記事があります。