【TensorFlow】TensorFlow/Kerasで畳み込みニューラルネットワークの実装。|Fresopiya自由に物事を深めるブログFresopiyaTensorFlow【TensorFlow】TensorFlow/Kerasで畳み込みニューラルネットワークの実装。06/02/2019スポンサードリンクどうも、とがみんです。以前の記事では、Kerasを用いてニューラルネットワークを構築し、手書き数字画像の分類を行いました。この記事では、一般的な物「鳥」や「猫」、「犬」などの画像を分類する畳み込みニューラルネットワークを「Keras」を利用して構築していきます。畳み込みニューラルネットワークの概要は以下の記事にまとめています。今回実装する畳み込みニューラルネットワークの概要は以下です。入力画像は、縦32×横32×RGBデータ32となってます。その他10種類に分類するため、出力層のノードは10個になっています。「CIFAR-10」データセットをダウンロードします。cifar10.load_data()ダウンロードしたデータを確認すると、32ピクセル×32ピクセルのRGB画像データ、学習用50000枚とテスト用10000枚が確認できます。以下のような画像があります。上記データを分類する、畳み込みニューラルネットワークのシステムを、「Keras」を利用して、以下の流れにそって構築していきます。学習済みモデルの保存と読み込みモデルの構築これに沿ってモデルを構築します。#全結合層(Affine層)。#全結合層(Affine層)。2)),#入力の平滑化keras.layers.Flatten(),#全結合層(Affine層)。activation="relu"),#全結合層(Affine層)。Documentationモデルのコンパイル以下のコードを実行します。metrics=['accuracy'])123model.compile(optimizer=tf.keras.optimizers.Adam(),loss='sparse_categorical_crossentropy',metrics=['accuracy'])学習アルゴリズムには「Adam」、損失関数は「クロスエントロピー関数」を指定しています。モデルの学習モデルを学習させます。y_test))画像データは0〜255の値を0〜1に直すために、255で割っています。バッチサイズを100、エポック数を10にしています。各エポック終了後にテストデータで精度を確認するために、validation_dataにテストデータを入れてます。実行すると学習が始まります。学習済みモデルの保存と読み込み作成した畳み込みニューラルネットワークのモデルを保存するコードと、読み込むコードです。以下のコードを実行すると、各エポックごとの認識精度と損失関数の値をプロットしたグラフが表示されます。学習は順調に進んでいますが、テストデータに対する精度は「71%」程度で落ち着いています。損失関数の値も、ほぼ変わらない状態になっています。これ以上学習させても、学習データのみに対応したシステムになってしまうことが考えられるので、より精度を上げるためには、畳み込み層の数を変えたり、ノード数を変えたりして、探る必要がありそうです。テストデータの画像と予測ラベルの確認テスト用データ30個の正解ラベルと、推測した結果を以下に表示します。model.predict_classes(x_test[0:30])カエルと猫を間違えがちですね(笑)まとめKerasを利用して、畳み込みニューラルネットワークによる、画像の分類システムを構築しました。認識精度は71%程度だったので、まだまだ改良する必要がありそうです。性能向上を目的とした研究をしていました。現在はFinTech系ベンチャー企業勤務。Boot」でWebAPIの作成。JSONの受信と送信を行うサンプル。行われる学習方法について。バッチ・ミニバッチ・オンライン学習。ニューラルネットワークの学習の仕組み。7【自由と哲学】一体自由とはどういう状態なのか。究極の自由とその考察。32HOMEプログラミングTensorFlow【TensorFlow】TensorFlow/Kerasで畳み込みニューラルネットワークの実装。