福野泰介の一日一創 - create every day

高校生から学ぶ金曜日、TensorFriday、ディープラーニングでオープンデータが欲しくなる

2018/05/18
#opendata #sabae #AI 

TensorFlowで計算する、1+1」で止まっていた機械学習の学習。
高校生Masashi氏をお迎えしてのTensorFlowを学ぶ金曜日、TensorFridayの第一回目の開催!

人間の脳のようにコンピューターに学習させてみるのが機械学習(マシンラーニング)。機械学習の一種、ディープラーニングに便利なオープンソースなライブラリ、TensorFlow(テンソルフロー)。

入力と出力の間に中間層をつくって、それぞれに重みを掛けバイアスを足すことで伝搬させるニューラルネットワーク。 中間層が2層以上あるニューラルネットワークを使った機械学習をディープラーニング。

概要を聞いたら、とりあえず動かす。
TensorFlowとPython3をインストールして、レゴのロボットによる色判定に使ったサンプルプログラムのパラメータをいじって精度アップトライ。 中間層の数を増やしたり、学習回数を増やしたり、あれこれいじって遊んでみます。

Model restored. 学習結果 test dataでの精度 96.49999737739563 result: [[0.26694813 0.13882981 0.14053437 0.15240924 0.14337103 0.15790743] [0.26694813 0.13882981 0.14053437 0.15240924 0.14337103 0.15790743] [0.26694813 0.13882981 0.14053437 0.15240924 0.14337103 0.15790743] [0.26486809 0.13913066 0.14082932 0.15404477 0.14392366 0.1572035 ] [0.26486809 0.13913066 0.14082932 0.15404477 0.14392366 0.1572035 ] [0.26486809 0.13913066 0.14082932 0.15404477 0.14392366 0.1572035 ] [0.26709853 0.13883259 0.14053056 0.15244703 0.14338787 0.15770341] [0.26709853 0.13883259 0.14053056 0.15244703 0.14338787 0.15770341] [0.26709853 0.13883259 0.14053056 0.15244703 0.14338787 0.15770341] [0.26667621 0.13883541 0.14053443 0.15241994 0.14335514 0.15817887]]

サンプルは中間層が1層。正解データ付きのテストデータを流して、正答率でチェックします。(上記の場合、96.5%)

学習させた重みとバイアスを使ってマイコン内で計算させれば、学習結果をロボットでも活用可能!(IchigoJamでもやってみたい!)

中間層を2層にしてディープラーニング化してみたのがプログラムがこちら

w_h = tf.Variable(tf.random_normal([4, num], mean=0.0, stddev=0.05)) b_h = tf.Variable(tf.zeros([num])) w_h2 = tf.Variable(tf.random_normal([num, num], mean=0.0, stddev=0.05)) b_h2 = tf.Variable(tf.zeros([num])) w_o = tf.Variable(tf.random_normal([num, 6], mean=0.0, stddev=0.05)) b_o = tf.Variable(tf.zeros([6])) h = tf.sigmoid(tf.matmul(x, w_h) + b_h) h2 = tf.sigmoid(tf.matmul(h, w_h2) + b_h2) y_hypo = tf.nn.softmax(tf.matmul(h2, w_o) + b_o)

taisukef/TensorFriday01 - GitHub

データがないと始まらない、ディープラーニング活用。いろんなオープンデータが欲しくなります。


データ集めといえば、同日おじゃました「福井高専アマチュア無線研究会 - Ja9ydb」。 刻々と変わる気象状況を入力に、使用帯域を出力にして、より遠くまで届く電波状況をディープラーニングするとか使えるのかも。

次回のTensorFriday#02では、データづくりや、おもしろデータを持ち寄って、いろいろ予測にトライします。

links
- 機械学習でロボット制御してみた(2) EV3 & TensorFlow - 広く浅い高校生のブログ
- TensorFriday #01 - connpass
- 高卒でもわかる機械学習 (0) 前置き – 頭の中に思い浮かべた時には
- MisakiMa/TensorFriday01

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / アイコン画像 / プロフィール画像