狠狠撸

狠狠撸Share a Scribd company logo
長谷川
1
? TensorFlowって何?
? TensorFlowで何ができるの?
? チュートリアルやってみた
https://www.tensorflow.org/versions/0.6.0/tutorials/index.html
2
? Data flowグラフを用いた数値計算のためのOSS。
? グラフの Node(節点)は数学的操作
? グラフのEdge(枝)はその間で通信される多次元データ配
列(テンソル)
を表している。?【詳細は次のページ】
? 機械学習とディープニューラルネットワークの研究のため
に開発されたが、その他の様々な用途にも使われている。
公式
https://www.tensorflow.org/
動画
https://youtu.be/oZikw5k_2FM
3
? 有向グラフ(Node, Edge)で
数学的計算を記述する。
? Node
? 数学的計算、変数の読み書き、
データの入出力。
? Edge
? Node間の入出力。
? Nodeを異なるデバイスに割り当て、
非同期に並列実行が可能。
4
Edge
Node
Node
? よくわからないのでチュートリアルで確かめてみよう。
5
【環境】
ubuntu 14.04 x86_64、Python 3.4
pip-installationでインストール
https://www.tensorflow.org/versions/master/get_started/os_se
tup.html#pip-installation
【トラブル】最初にCentOSでやったとき
pipでTensorFlowインストール時に下記のエラーメッセージが表示された。
tensorflow-0.6.0-cp34-none-linux_x86_64.whl is not a
supported wheel on this platform.
「tensorflow-0.6.0-cp34-none-linux_x86_64.whl」をダウンロードし
て、「 tensorflow-0.6.0-cp35-none-linux_x86_64.whl 」にリネーム
してインストールした。
6
①MNIST For ML Beginners
機械学習(Machine Learning)初心者向けの手書き数
字の分類チュートリアル。
MNISTはシンプルな画像の集合で、下記のような手描
きの数字で構成される。
Softmax Regression(ソフトマックス回帰)で数字を推
定する。
7
手順1
MNISTデータをダウンロード
mnist.tran:trainingデータ 55,000
mnist.test:testデータ 10,000
mnist.validation:validationデータ 5,000
手順2
28pixel×28pixelの画像を28×28=784の配列に変換。
配列の要素は0(白)~1(黒)の実数。
8
手順2 続き
mnist.trans.xs、mnist.trans.ysを下記のように定義する。
モデル化完了。
次はどのように推定するか。
9
各画像の数字各画像の配列データ
Softmax Regressions 1/3
STEP1:Evidenceの入力
STEP2:Evidenceを確率に変換する
その数字である確率が高い/弱いEvidenceに分類される。
10
赤:その数字である確率が高いEvidence
青:その数字である確率が低いEvidence
Softmax Regressions 2/3
Wi:重み
bi:数字iのバイアス
j:画像xの配列のインデックス
y:予測確率
確率分布に正規化
式変形
11
Softmax Regressions 3/3
先ほどの式をモデル化、数式化するとこうなる。
計算効率化のため、ベクトル化する。
12
ソース 1/3
>>> import tensorflow as tf
>>> import os
#MNISTデータダウンロード用のpyをダウンロード
>>> os.system("curl
https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/examples/tutorials/mnis
t/input_data.py -o input_data.py")
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 7309 100 7309 0 0 11158 0 --:--:-- --:--:-- --:--:-- 11158
0
>>> import input_data
#MNISTデータダウンロード&格納
>>> mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting MNIST_data/train-images-idx3-ubyte.gz
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
13
ソース 2/3
>>> x = tf.placeholder(tf.float32, [None, 784])
>>> W = tf.Variable(tf.zeros([784, 10]))
>>> b = tf.Variable(tf.zeros([10]))
>>> y = tf.nn.softmax(tf.matmul(x, W) + b)
>>> y_ = tf.placeholder(tf.float32, [None, 10])
#cross-entropy
>>> cross_entropy = -tf.reduce_sum(y_*tf.log(y))
#backpropagation algorithm
>>> train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
#初期化
>>> init = tf.initialize_all_variables()
>>> sess = tf.Session()
>>> sess.run(init)
14
ソース 3/3
#training
>>> for i in range(1000):
... batch_xs, batch_ys = mnist.train.next_batch(100)
... sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
...
>>> correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
#TRUE/FALSEを1/0に変換
>>> accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
#精度を表示
>>> print sess.run(accuracy, feed_dict={x: mnist.test.images, y_:
mnist.test.labels})
0.9113
※rangeを5000にしたら0.9243になった
15

More Related Content

Google TensorFlowで遊んでみた①