【AI】Keras-GaussianNoiseの使い方を解説!分散指定するだけ

こんにちは、ヒガシです。

 

前回の記事にて、ガウシアンノイズとは何なのかを解説しました。

今回はガウシアンノイズを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がいわゆる分散です。

ここの値を大きくするほど大きなノイズを生成することになります。

 

スポンサーリンク

サンプルコードの実行結果

それでは先ほどのコードを実行してみましょう。

 

以下の結果が得られました。

gaussian_noise_layerを持ったkerasモデルを作成した結果

summary()で問題なくgaussian_noiseを出してくれてますね。

 

また、入出力のテスト結果は入力と出力が一致していることもわかります。

先ほども説明した通り、GaussianNoiseは学習時にのみ機能し、推論時は機能しませんので、これで問題ないです。

 

スポンサーリンク

おわりに

ということで今回はKerasモデルを使ってGaussianNoiseを実装する方法をご紹介しました。

 

AIモデル構築の際にぜひご活用ください。

 

このブログでは、このようなAIスキルを多数紹介しています。

ぜひ他のページもご覧ください。

過去記事一覧

 

それではまた!

 

コメント

タイトルとURLをコピーしました