SequentialモデルAPI

はじめに,KerasのSequentialモデルのガイド を参照してください.

モデルの有用な属性

  • model.layersは,モデルに加えたレイヤーのリストです.

Sequentialモデルのメソッド

compile

compile(self, optimizer, loss, metrics=None, sample_weight_mode=None)

訓練過程の設定.

引数

  • optimizer: 文字列(optimizer名)あるいは optimizer のオブジェクト. optimizers を参照してください.
  • loss: 文字列(目的関数名)あるいは目的関数. losses を参照してください.
  • metrics: 訓練やテストの際にモデルを評価するための評価関数のリスト. 典型的には metrics=['accuracy']を使用するでしょう.評価関数 を参照してください.
  • sample_weight_mode: もし時間ごとのサンプルの重み付け(2次元の重み)を行う必要があれば "temporal" と設定してください. "None" の場合,サンプルへの(1次元)重み付けをデフォルトとしています.
  • kwargs: Theano がバックエンドの場合, これらは K.function に渡されます. Tensorflowバックエンドの場合はtf.Session.runに渡されます.

model = Sequential()
model.add(Dense(32, input_shape=(500,)))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

fit

fit(self, x, y, batch_size=32, epochs=10, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0)

固定のエポック数でモデルを訓練する.

引数

  • x: 入力データ,Numpy 配列,あるいは Numpy 配列のリスト (モデルに複数の入力がある場合).
  • y: ラベル,Numpy 配列.
  • batch_size: 整数.設定したサンプル数ごとに勾配の更新を行います.
  • epochs: 整数で,モデルを訓練するエポック数.
  • verbose: 0とすると標準出力にログを出力しません. 1の場合はログをプログレスバーで標準出力,2 の場合はエポックごとに1行のログを出力します.
  • callbacks: keras.callbacks.Callback にあるインスタンスのリスト. 訓練中にcallbacksのリストを適用します. callbacksを参照してください.
  • validation_split: 浮動小数点数 (0. < x < 1) で, ホールドアウト検証のデータとして使うデータの割合.
  • validation_data: ホールドアウト検証用データとして使うデータのタプル (x_val, y_val) か (x_val, y_val, val_sample_weights). 設定すると validation_split を無視します.
  • shuffle: 真理値か文字列 (for 'batch'). 各エポックにおいてサンプルをシャッフルするかどうか. 'batch' は HDF5 データだけに使える特別なオプションです.バッチサイズのチャンクの中においてシャッフルします.
  • class_weight: 辞書で,クラス毎の重みを格納します. (訓練の間だけ)損失関数をスケーリングするために使います.
  • sample_weight: 入力サンプルと同じ長さの1次元のNumpy 配列で,訓練のサンプルに対する重みを格納します. これは損失関数をスケーリングするために(訓練の間だけ)使用します.
    • (重みとサンプルの間における1:1 の写像), あるいは系列データの場合において,2次元配列の (samples, sequence_length) という形式で, すべてのサンプルの各時間において異なる重みを適用できます. この場合,compile() の中で sample_weight_mode="temporal" と確実に明記すべきです.
  • initial_epoch: 訓練開始時のepoch(前の学習から再開する際に便利です).

戻り値

History オブジェクト. History.history 属性は 実行に成功したエポックにおける訓練の損失値と評価関数値の記録と,(適用可能ならば)検証における損失値と評価関数値も記録しています.

Raises

  • RuntimeError: モデルが1度もcompileされていないとき.

evaluate

evaluate(self, x, y, batch_size=32, verbose=1, sample_weight=None)

バッチごとにある入力データにおける損失値を計算します.

引数

  • x: 入力データ,Numpy 配列あるいは Numpy 配列のリスト (モデルに複数の入力がある場合).
  • y: ラベル,Numpy 配列.
  • batch_size: 整数で,指定したサンプル数で勾配の更新を行います.
  • verbose: 進行状況メッセージ出力モードで,0か1.
  • sample_weight: サンプルの重み,Numpy 配列.

戻り値

スカラーで,テストデータの損失値(モデルの評価関数を設定していない場合) あるいはスカラーのリスト(モデルが他の評価関数を計算している場合). model.metrics_names属性により,スカラーの出力でラベルを表示します.

Raises

  • RuntimeError: モデルが1度もcompileされていないとき.

predict

predict(self, x, batch_size=32, verbose=0)

入力サンプルに対する予測値の出力を生成します.

入力サンプルごとにバッチごとに処理します.

引数

  • x: 入力データで,Numpy 配列の形式.
  • batch_size: 整数.
  • verbose: 進行状況メッセージ出力モード,0または1.

戻り値

予測値を格納した Numpy 配列.


predict_classes

predict_classes(self, x, batch_size=32, verbose=1)

バッチごとに入力サンプルに対するクラスの予測を生成します.

入力サンプルごとにバッチごとに処理します.

引数

  • x: 入力データ,Numpy 配列または Numpy 配列のリスト(モデルに複数の入力がある場合).
  • batch_size: 整数.
  • verbose: 進行状況メッセージ出力モード,0または1.

戻り値

属するクラスの予測を格納した Numpy 配列.


predict_proba

predict_proba(self, x, batch_size=32, verbose=1)

入力サンプルの各々のクラスの所属確率を生成します.

入力サンプルごとにバッチごとに処理します.

引数

  • x: 入力データ,Numpy 配列または Numpy 配列のリスト(モデルに複数の入力がある場合).
  • batch_size: 整数.
  • verbose: 進行状況メッセージ出力モード,0または1.

戻り値

確率の予測値を格納した Numpy 配列.


train_on_batch

train_on_batch(self, x, y, class_weight=None, sample_weight=None)

サンプル中の1つのバッチで勾配を更新します.

引数

  • x: 入力データ,Numpy 配列または Numpy 配列のリスト(モデルに複数の入力がある場合).
  • y: ラベル,Numpy 配列.
  • class_weight: 辞書で,クラス毎の重みを格納します. (訓練の間だけ)損失関数をスケーリングするために使います.
  • sample_weight: サンプルの重み,Numpy 配列.

戻り値

スカラーでトレーニングの損失値(モデルに評価関数が設定されていない場合) あるいはスカラーのリスト(モデルが他の評価関数を計算している場合). model.metrics_names 属性により,スカラーの出力でラベルを表示する.

Raises

  • RuntimeError: モデルが1度もcompileされていないとき.

test_on_batch

test_on_batch(self, x, y, sample_weight=None)

サンプルの単一バッチにおけるモデルの評価を行います.

引数

  • x: 入力データ,Numpy 配列または Numpy 配列のリスト(モデルに複数の入力がある場合).
  • y: ラベル,Numpy 配列の形式.
  • sample_weight: サンプルの重み,Numpy 配列の形式.

戻り値

スカラーで,テストの損失値(モデルに評価関数が設定されていない場合) あるいはスカラーのリスト(モデルが他の評価関数を計算している場合). model.metrics_names 属性により,スカラーの出力でラベルを表示する.

Raises

  • RuntimeError: モデルが1度もcompileされていないとき.

predict_on_batch

predict_on_batch(self, x)

サンプルの単一のバッチに対する予測値を返します.

引数

  • x: 入力データ,Numpy 配列または Numpy 配列のリスト(モデルに複数の入力がある場合).

戻り値

予測値を格納した Numpy 配列.


fit_generator

fit_generator(self, generator, steps_per_epoch, epochs=1, verbose=1, callbacks=None, validation_data=None, validation_steps=None, class_weight=None, max_queue_size=10, workers=1, use_multiprocessing=False, initial_epoch=0)

Python のジェネレータにより,バッチごとに生成されるデータでモデルを学習させます.

ジェネレータは効率化のために,モデルを並列に実行します. たとえば,これを使えば CPU 上でリアルタイムに画像データを拡大しながら,それと並行して GPU 上でモデルを学習できます.

引数

  • generator: ジェネレータ. ジェネレータの出力は以下のいずれかでなければならず,どの配列も同数のサンプルを含まなければなりません.
    • タプル (inputs, targets)
    • タプル (inputs, targets, sample_weights). ジェネレータは永遠にそのデータを繰り返すことを期待されています. samples_per_epoch 数のサンプルが,モデルによって確認されたときにエポックが終了します.
  • steps_per_epoch: 1エポックを宣言してから次のエポックの開始前までにgeneratorから生成されるサンプル (サンプルのバッチ) の総数. 典型的には,データにおけるユニークなサンプル数をバッチサイズで割った値です.
  • epochs: 整数で,イテレーションの総数.
  • verbose: 進行状況メッセージ出力モードで,0,1,あるいは 2.
  • callbacks: callbacks のリストで,訓練の際に呼び出されます.
  • validation_data: 以下のいずれかです.
    • 検証用データのジェネレータ
    • タプル (inputs, targets)
    • タプル (inputs, targets, sample_weights).
  • validation_steps: validation_data がジェネレータである場合だけ関係があります. 各エポックの終わりに検証用ジェネレータから使用するステップ数です.典型的には,検証用データにおけるユニークなサンプル数をバッチサイズで割った値です.
  • class_weight: 辞書で,クラス毎の重みを格納します. (訓練の間だけ)損失関数をスケーリングするために使います.
  • max_queue_size: ジェネレータのキューの最大サイズ.
  • workers: スレッドベースのプロセス使用時の最大プロセス数
  • use_multiprocessing: Trueならスレッドベースのプロセスを使います.実装がmultiprocessingに依存しているため,子プロセスに簡単に渡すことができないものとしてPickableでない引数をgeneratorに渡すべきではないことに注意してください.
  • initial_epoch: 訓練開始時のepoch(前の学習から再開する際に便利です).

戻り値

History オブジェクト.

Raises

  • RuntimeError: モデルが1度もcompileされていないとき.

def generate_arrays_from_file(path):
    while 1:
        f = open(path)
        for line in f:
            # create numpy arrays of input data
            # and labels, from each line in the file
            x, y = process_line(line)
            yield (x, y)
        f.close()

model.fit_generator(generate_arrays_from_file('/my_file.txt'),
                    samples_per_epoch=10000, epochs=10)

evaluate_generator

evaluate_generator(self, generator, steps, max_queue_size=10, workers=1, use_multiprocessing=False)

ジェネレータのデータによってモデルを評価します.

ジェネレータは test_on_batch が受け取るデータと同じ種類のデータを返却するべきです.

引数

  • generator: (inputs, targets)あるいは(inputs, targets, sample_weights)のタプルを生成するジェネレーター.
  • steps: generatorが停止するまでに生成するサンプル(サンプルのバッチ)の総数
  • max_queue_size: ジェネレータのキューの最大サイズ
  • workers: スレッドベースのプロセス使用時の最大プロセス数
  • use_multiprocessing: Trueならスレッドベースのプロセスを使います.実装がmultiprocessingに依存しているため,子プロセスに簡単に渡すことができないものとしてPickableでない引数をgeneratorに渡すべきではないことに注意してください.

戻り値

スカラーで,テストの損失値(モデルに評価関数が設定されていない場合) あるいはスカラーのリスト(モデルが他の評価関数を計算している場合). model.metrics_names属性により,スカラーの出力でラベルを表示する.

Raises

  • RuntimeError: モデルが1度もcompileされていないとき.

predict_generator

predict_generator(self, generator, steps, max_queue_size=10, workers=1, use_multiprocessing=False, verbose=0)

ジェネレータから生成されたデータに対して予測します.

ジェネレータはpredict_on_batchが受け取るデータと同じ種類のデータを返すべきです.

引数

  • generator: 入力サンプルのバッチを生成するジェネレータ.
  • steps: generatorが停止するまでに生成するサンプル(サンプルのバッチ)の総数
  • max_queue_size: ジェネレータのキューの最大サイズ
  • workers: スレッドベースのプロセス使用時の最大プロセス数
  • use_multiprocessing: Trueならスレッドベースのプロセスを使います.実装がmultiprocessingに依存しているため,子プロセスに簡単に渡すことができないものとしてPickableでない引数をgeneratorに渡すべきではないことに注意してください.
  • verbose: 進行状況メッセージ出力モード,0または1.

戻り値

予測値の Numpy 配列.