Keras 2 リリースノート (翻訳)
翻訳 : (株)クラスキャット セールスインフォメーション
日時 : 05/08/2017
* 本ページは、github Keras の releases の Keras 2 release notes を翻訳したものです:
このドキュメントは Keras 1 から Keras 2 で発生した変更、得に API 変更について詳述しています。
訓練
- nb_epoch 引数はどこにおいても epochs と名前変更されました。
- fit_generator, evaluate_generator and predict_generator メソッドは、サンプル数よりも、今では generator からバッチ数 (訓練ステップ数) を描く動作をします。
- samples_per_epoch は fit_generator で steps_per_epoch に名前変更されました。
- nb_val_samples は fit_generator で validation_steps に名前変更されました。
- val_samples は evaluate_generator と predict_generator で steps と名前変更されました。
- model.add_loss(loss_tensor) を呼び出すことにより今ではモデルに損失を手動で追加できます。損失はモデルの他の損失に追加されて訓練の間に最小化されます。
- 任意の損失を特定のモデル出力に適用しないこともまた可能です。出力に対して損失引数として None を渡す場合 (e.g. compile において loss={‘output_1’: None, ‘output_2’: ‘mse’})、fit, train_on_batch, or fit_generator を使用する時にモデルはこの出力のために Numpy 配列を供給されることを期待しません。predict を使用する時には通常のように出力値は依然として返されます。
- TensorFlow では、今ではモデルはそれらの入力の一部が (あるいは全てでも) placeholder よりも TensorFlow queue あるいは変数である場合、fit を使用して訓練されます。詳細な例は このテスト を見てください。
損失 & メトリックス
- objectives モジュールは losses と名前変更されました。
- 幾つかの legacy メトリック関数は削除されました、つまり matthews_correlation, precision, recall, fbeta_score, fmeasure です。
- カスタム・メトリック関数はもはや dict を返すことができません、それらは単一のテンソルを返さなければなりません。
モデル
- モデルのコンストラクタ引数は名前変更されました :
- input -> inputs
- output -> outputs
- Sequential モデルはもはや set_input メソッドをサポートしません。
- Keras 2.0 またはそれ以上で保存された任意のモデルについて、backend X で訓練された重みは手動のいかなる変換ステップもなしで backend Y で動作するように変換されます。
層
除去
層 MaxoutDense, Highway は deprecated となりそして TimedistributedDense は削除されました。
Call メソッド
- 学習段階を使用する全ての層は今では call において training 引数をサポートし (Python boolean または symbolic tensor)、層毎ベースで学習段階を指定可能です。例えば、Dropout インスタンスを dropout(inputs, training=True) として呼び出すことにより、現在のグローバルな学習段階にかかわらず、いつも dropout を適用する層を得られます。訓練引数はどこでもグローバルな Keras 学習段階にデフォルト設定されます。
- 層の call メソッドは任意のキーワード引数を取ることができます、e.g. call(inputs, alpha=0.5) のような call signature でカスタム層を定義し、そして層を呼び出すときに (当然、functional API でのみ) alpha キーワード引数を渡すことができます。
- __call__ は今では TensorFlow name_scope を使用します、その結果 TensorFlow グラフは TensorBoard において良く見え良く構造化されます。
全ての層は legacy dim_ordering 引数を取る
dim_ordering は data_format と名前変更されました。それは今では2つの値を取ります : “channels_first” (以前は “th”) と “channels_last” (以前は “tf”) です。
Dense 層
インターフェイスを変更しました :
- output_dim -> units
- init -> kernel_initializer
- added bias_initializer argument
- W_regularizer -> kernel_regularizer
- b_regularizer -> bias_regularizer
- b_constraint -> bias_constraint
- bias -> use_bias
Embedding
Convolutional 層
- AtrousConvolution1D と AtrousConvolution2D 層は deprecated となりました。これらの機能は代わりに Convolution1D と Convolution2D 層の dilation_rate 引数を通してサポートされます。
- Convolution* 層は Conv* 層と名前変更されました。
- Deconvolution2D 層は Conv2DTranspose と名前変更されました。
- Conv2DTranspose は output_shape 引数をもはや必要としません、使用をより簡単にしました。
全ての convolutional 層に共通のインターフェイス変更 :
- nb_filter -> filters
- float カーネル次元引数は単一のタプル引数、kernel size となります。E.g. legacy Conv2D(10, 3, 3) 呼び出しは Conv2D(10, (3, 3)) になります。
- kernel_size はタプルの代わりに整数を設定可能です、e.g. Conv2D(10, 3) は Conv2D(10, (3, 3)) と同値です。
- subsample -> strides. 整数としても設定可能です。
- border_mode -> padding
- init -> kernel_initializer
- added bias_initializer 引数を追加しました。
- W_regularizer -> kernel_regularizer
- b_regularizer -> bias_regularizer
- b_constraint -> bias_constraint
- bias -> use_bias
- dim_ordering -> data_format
- SeparableConv2D 層で、init は depthwise_initializer と pointwise_initializer に分割されました。
- Conv2D と Conv1D で dilation_rate 引数を追加しました。
- 1D convolution カーネルは今では 3D テンソルとして保存されます (以前の 4D の代わりに)。
- 2D と 3D convolution カーネルは今では spatial_dims + (input_depth, depth)) フォーマットで保存されます、data_format=”channels_first” でさえも。
Pooling1D
- pool_length -> pool_size
- stride -> strides
- border_mode -> padding
Pooling2D, 3D
- border_mode -> padding
- dim_ordering -> data_format
ZeroPadding 層
ZeroPadding2D と ZeroPadding3D 層の padding 引数はそれぞれ長さ 2 と 3 のタプルでなければなりません。各エントリ i は空間的な次元 i をどのくらいで pad するかを含みます。もし整数ならば、対照的な padding が適用されます。整数のタプルならば、非対称な padding が適用されます。
Upsampling1D
- length -> size
BatchNormalization
BatchNormalization の mode 引数は除去されました ; BatchNorm は今では mode 0 のみをサポートします(訓練の間は feature-wise な normalization のためにバッチ・メトリックスを使用し、テストの間は feature-wise normalization のために移動メトリックス (moving metrics) を使用します)。
- beta_init -> beta_initializer
- gamma_init -> gamma_initializer
- 引数 center, scale を追加しました (boolean、それぞれ beta と gamma を使うか否か)
- 引数 moving_mean_initializer, moving_variance_initializer を追加しました
- 引数 beta_regularizer, gamma_regularizer を追加しました
- 引数 arguments beta_constraint, gamma_constraint を追加しました
- 属性 running_mean は moving_mean に名前変更されました
- 属性 running_std は moving_variance に名前変更されました (実際には現行の実装と不一致です)。
ConvLSTM2D
convolutional 層と recurrent 層のためのものと同じ変更が適用されます。
PReLU
- init -> alpha_initializer
GaussianNoise
- sigma -> stddev
Recurrent 層
- output_dim -> units
- init -> kernel_initializer
- inner_init -> recurrent_initializer
- 引数 bias_initializer を追加しました
- W_regularizer -> kernel_regularizer
- b_regularizer -> bias_regularizer
- 引数 kernel_constraint, recurrent_constraint, bias_constraint が追加されました
- dropout_W -> dropout
- dropout_U -> recurrent_dropout
- consume_less -> implementation. 文字列値は整数で置き換えられました: implementation 0 (default), 1 or 2。
- LSTM only: 引数 forget_bias_init は除去されました。代わりに boolean 引数 unit_forget_bias があり、True がデフォルトです。
Lambda
Lambda 層は今では mask 引数をサポートします。
Utilities
Utilities は今では特定の submodule からではなく keras.utils から import されるべきです (e.g. no more keras.utils.np_utils…)。
Backend
random_normal と truncated_normal
- std -> stddev
Misc
- backend において、set_image_ordering と image_ordering は今では set_data_format と data_format です。
- (nb_epoch 以外の) nb_ で prefix された任意の引数は代わりに num_ で prefix されるように名前変更されました。これは2つのデータセットと一つの preprocessing ユティリティに影響を与えます。
以上