トップページ人工知能,実世界DB人工知能による分類 (classification)ニューラルネットワークを用いて分類を行うプログラム(Google Colaboratory を使用)

ニューラルネットワークを用いて分類を行うプログラム(Google Colaboratory を使用)

ここでの「分類」は,データから,そのラベル(クラス名など)を求めるもの. 分類のために,教師データを用いて事前学習を行う.

次を行うプログラムの例

  1. ニューラルネットワークの作成

     ニューロンの数,ニューロンの種類などの設定

  2. 学習に関する設定

     使用する最適化手法,誤差算出法(損失関数)などの設定

  3. 学習の実行

     教師データを使用.結合の重みが変化

  4. 実際の使用

     データの分類を行う

動画 URL: https://www.youtube.com/watch?v=xv79aPrYMs0

Google Colab へのリンク

このページの内容は,Google Colaboratory でも実行できる.

そのために,次の URL で,Google Colaboratory のノートブックを準備している.

次のリンクをクリックすると,Google Colaboratoryノートブックが開く. そして,Google アカウントでログインすると,Google Colaboratory のノートブック内のコードを実行することができる.Google Colaboratory のノートブックは書き換えて使うこともできる.このとき,書き換え後のものを,各自の Google ドライブ内に保存することもできる.

https://colab.research.google.com/drive/18Nf9FPFhOvx8_V30z8PdBD2kcyDap8b7?usp=sharing

前準備

自分で,Google Colaboratory のノートブックを新規作成する場合(上のリンクを使わない場合や)は,前準備を行う.

Google Colaboratory のノートブックを新規作成する場合

  1. Google Colaboratory のWebページを開く

    https://colab.research.google.com

    Google Colab はオンラインの Python 開発環境. 使用するには Google アカウントが必要

  2. ファイル」で、「ノートブックを新規作成」を選ぶ

    [image]
  3. Google アカウントでのログインが求められたときはログインする

    [image]

    [image]

プログラムのソースコード

1. ニューラルネットワークの作成

入力: 4個の数値のまとまり

出力: 「4個の数字のまとまり」について, 3種類の中から 1つに分類

1層目:ニューロン 64個,relu

2層目: ニューロン 3個, softmax

import tensorflow as tf 
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation

m = tf.keras.models.Sequential([
    tf.keras.layers.Dense(units=64, input_dim=4, activation='relu'),
    tf.keras.layers.Dense(units=3, activation='softmax')
])

print(m.summary())

[image]

動画 URL: https://www.youtube.com/watch?v=dNPeVCvL5Jg

2. 学習に関する設定

ニューラルネットワークの出力と,教師データの正解との誤差を最小にするという最適化を行う

次のプログラムでは

m.compile(loss=tf.keras.losses.categorical_crossentropy,
          optimizer=tf.keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))

[image]

動画 URL: https://www.youtube.com/watch?v=dTMiGBpGAbg

3. 学習の実行

学習の繰り返し回数は 1000回にしている

import numpy as np
x = np.array(
[[0, 0, 0, 0],
 [0, 0, 0, 1],
 [0, 0, 1, 0],
 [0, 0, 1, 1],
 [0, 1, 0, 0],
 [0, 1, 0, 1],
 [0, 1, 1, 0],
 [0, 1, 1, 1],
 [1, 0, 0, 0],
 [1, 0, 0, 1],
 [1, 0, 1, 0],
 [1, 0, 1, 1],
 [1, 1, 0, 0],
 [1, 1, 0, 1],
 [1, 1, 1, 0],
 [1, 1, 1, 1]])
y = np.array(
[0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0])
m.fit(x, tf.keras.utils.to_categorical(y), epochs=1000) 

[image]

動画 URL: https://www.youtube.com/watch?v=so0zte2zfvk

4. ニューラルネットワークを用いた分類

m.predict( np.array([[1, 1, 0, 0]]) )
m.predict( np.array([[0, 1, 0, 1]]) )
m.predict( np.array([[1, 0, 0, 1]]) )

[image]

動画 URL: https://www.youtube.com/watch?v=N5ibKiukCUs