Keras学習ノート(一)認識シーケンスモデル
7086 ワード
Kerasは、純粋なPythonによって記述された並列ベースTensorflow、Theano、およびCNTKバックエンドである.Kerasは高速実験をサポートするために生まれ、あなたのideaを迅速に結果に変換することができ、その可読性は非常に強いです.筆者はここで中国語のドキュメントを参考にして自分に小さな結び目を作って、後で調べるのに便利です.
認識シーケンスモデル
シーケンシャルモデルは深さ学習における最も基本的なモデルであり,字面の意味から理解すると順序配列,すなわち線形重畳構造,例えば最も基本的なBPニューラルネットワーク,VGGNetなどである.実現は簡単だ.モデルクラスはkerasに含まれます.モデルでは,Sequentialを導入し,暗黙層,アクティブ化関数などはlayersライブラリにある.以下に簡単な例を示します.
はい、上に2層のBPニューラルネットワーク(出力層を含む)を構築しました.次に、どのように訓練するかを定義し、入力データをロードし、簡単な2つの言葉で解決しなければなりません.
コンパイルcompile
オプティマイザ、損失関数、指標リストの3つのパラメータを構成する必要があります.最も簡単な例は次のとおりです.
optimizerはオプティマイザで、あらかじめ定義したrmspropなどでも自分で定義できます.まずoptimizersライブラリをインポートし、オプティマイザを定義します.主なパラメータには学習率があります.オプティマイザによって異なります.
カスタムoptimizer from keras import optimizers 1、SGD keras.optimizers.SGD(lr=0.01、momentum=0.0、decay=0.0、nesterov=False)ではdecay学習率の減衰率;momentum運動量;nesterov:Nesterov運動量2、Adam kerasを使用するかどうかを決定する.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08) 3、RMSprop keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-06) 4、Adagrad keras.optimizers.Adagrad(lr=0.01, epsilon=1e-06) 5、Adadelta keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-06)
損失関数は2番目のパラメータであり,損失関数にも多くある.
mean_squared_Errorまたはmse mean_absolute_Errorまたはmae mean_absolute_percentage_Erorまたはmape mean_squared_logarithmic_errorまたはmsle squared_hinge hinge categorical_hinge binary_crossentropy(対数損失、loglossとも呼ばれる)logcosh categorical_crossentropy:クロスエントロピー損失関数とも呼ばれ、このターゲット関数を使用する場合、ラベルを(nb_samples,nb_classes)のような2値シーケンスsparse_に変換する必要があることに注意してください.categorical_crossentrop:上記のように、疎ラベルを受け入れます.この関数を使用する場合、出力値の次元と同じラベルが必要です.ラベルデータに次元を追加する必要があります.np.expand_dims(y,-1) kullback_leibler_divergence:予測値確率分布Qから真値確率分布Pまでの情報利得は、2つの分布の違いを測定するために用いる.poisson:(predictions-targets*log(predictions))の平均cosine_proximity:予測値と実際のラベルのコサイン距離の平均値の逆数
トレーニング
訓練用fit関数は,まず訓練セットdata,labelをロードする.batch_を定義することもできますsize,epochは一般的に2分類問題に対して直接labelを組み込むことができる.次のように
多分類の場合,ラベル[100,1]を[100,n]すなわちtensorflowにおけるonehotに変換することを考える.
verbose:ログ表示、0は標準出力ストリームにログ情報を出力しない、1は出力進捗バーレコード、2はepochごとに1行のレコードを出力する
予測
予測結果はpredict関数に使用されます
評価
前のmetrics=[‘accuracy’]を評価する
認識シーケンスモデル
シーケンシャルモデルは深さ学習における最も基本的なモデルであり,字面の意味から理解すると順序配列,すなわち線形重畳構造,例えば最も基本的なBPニューラルネットワーク,VGGNetなどである.実現は簡単だ.モデルクラスはkerasに含まれます.モデルでは,Sequentialを導入し,暗黙層,アクティブ化関数などはlayersライブラリにある.以下に簡単な例を示します.
from keras.models import Sequential
from keras.layers import Dense, Activation
model = Sequential([
Dense(32, units=784),# [784,32]
Activation('relu'),#
Dense(10),# [32,10]
Activation('softmax'),#
])
はい、上に2層のBPニューラルネットワーク(出力層を含む)を構築しました.次に、どのように訓練するかを定義し、入力データをロードし、簡単な2つの言葉で解決しなければなりません.
コンパイルcompile
オプティマイザ、損失関数、指標リストの3つのパラメータを構成する必要があります.最も簡単な例は次のとおりです.
# For a multi-class classification problem
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
optimizerはオプティマイザで、あらかじめ定義したrmspropなどでも自分で定義できます.まずoptimizersライブラリをインポートし、オプティマイザを定義します.主なパラメータには学習率があります.オプティマイザによって異なります.
from keras import optimizers
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer=sgd)
カスタムoptimizer from keras import optimizers 1、SGD keras.optimizers.SGD(lr=0.01、momentum=0.0、decay=0.0、nesterov=False)ではdecay学習率の減衰率;momentum運動量;nesterov:Nesterov運動量2、Adam kerasを使用するかどうかを決定する.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08) 3、RMSprop keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-06) 4、Adagrad keras.optimizers.Adagrad(lr=0.01, epsilon=1e-06) 5、Adadelta keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-06)
損失関数は2番目のパラメータであり,損失関数にも多くある.
mean_squared_Errorまたはmse mean_absolute_Errorまたはmae mean_absolute_percentage_Erorまたはmape mean_squared_logarithmic_errorまたはmsle squared_hinge hinge categorical_hinge binary_crossentropy(対数損失、loglossとも呼ばれる)logcosh categorical_crossentropy:クロスエントロピー損失関数とも呼ばれ、このターゲット関数を使用する場合、ラベルを(nb_samples,nb_classes)のような2値シーケンスsparse_に変換する必要があることに注意してください.categorical_crossentrop:上記のように、疎ラベルを受け入れます.この関数を使用する場合、出力値の次元と同じラベルが必要です.ラベルデータに次元を追加する必要があります.np.expand_dims(y,-1) kullback_leibler_divergence:予測値確率分布Qから真値確率分布Pまでの情報利得は、2つの分布の違いを測定するために用いる.poisson:(predictions-targets*log(predictions))の平均cosine_proximity:予測値と実際のラベルのコサイン距離の平均値の逆数
トレーニング
訓練用fit関数は,まず訓練セットdata,labelをロードする.batch_を定義することもできますsize,epochは一般的に2分類問題に対して直接labelを組み込むことができる.次のように
# Train the model, iterating on the data in batches of 32 samples
model.fit(data, labels, epochs=10, batch_size=32)
多分類の場合,ラベル[100,1]を[100,n]すなわちtensorflowにおけるonehotに変換することを考える.
# Convert labels to categorical one-hot encoding
one_hot_labels = keras.utils.to_categorical(labels, num_classes=10)
# Train the model, iterating on the data in batches of 32 samples
model.fit(data, one_hot_labels, epochs=10, batch_size=32)
verbose:ログ表示、0は標準出力ストリームにログ情報を出力しない、1は出力進捗バーレコード、2はepochごとに1行のレコードを出力する
予測
予測結果はpredict関数に使用されます
model.predict( x, batch_size=32, verbose=0)
predict_on_batch( x)# batch
評価
前のmetrics=[‘accuracy’]を評価する
model.evaluate( x, y, batch_size=32, verbose=1, sample_weight=None)