こんにちは、ヒガシです。
前回の記事にて、ガウシアンノイズとは何なのかを解説しました。
今回はガウシアンノイズをKerasのAIモデルの入力に適用する方法を解説していきます。
それではさっそくやっていきましょう!
Keras-GaussianNoiseについて
Kerasのガウシアンノイズ層は、指定した分散で平均が0のガウシアンノイズを生成し、入力に加えるというものです。
このような処理を加えることで、過学習することを防ぐことができるようです。
また、このガウシアンノイズ層は学習時にのみ機能し、学習後のモデルでは何も作用しませんので、ご注意ください。
Keras-GaussianNoiseの実装例
今回は単純な入力にガウシアンノイズを加えるだけのモデルを作成してみます。
以下がそのサンプルコードです。
inout_dim = 1
stddev = 1
#モデルの作成
inputs = Input(shape=inout_dim)
outputs = GaussianNoise(stddev)(inputs)
model = Model(inputs=inputs, outputs=outputs)
model.compile(loss="mean_squared_error", optimizer=Adam(lr=0.001))
model.summary()
#適当な入力を入れて検証
input_data = np.array([1.])
output_data = model(input_data)
output_data = np.array(output_data)[0]
print('input_data=', input_data)
print('output_data=', np.array(output_data))
2行名に書いているstddevがいわゆる分散です。
ここの値を大きくするほど大きなノイズを生成することになります。
サンプルコードの実行結果
それでは先ほどのコードを実行してみましょう。
以下の結果が得られました。
summary()で問題なくgaussian_noiseを出してくれてますね。
また、入出力のテスト結果は入力と出力が一致していることもわかります。
先ほども説明した通り、GaussianNoiseは学習時にのみ機能し、推論時は機能しませんので、これで問題ないです。
おわりに
ということで今回はKerasモデルを使ってGaussianNoiseを実装する方法をご紹介しました。
AIモデル構築の際にぜひご活用ください。
このブログでは、このようなAIスキルを多数紹介しています。
ぜひ他のページもご覧ください。
それではまた!
コメント