Help us understand the problem. What is going on with this article?

知識ゼロからTensorFlowを使った機械学習で人工知能を作るー入門編1

More than 3 years have passed since last update.

TensorFlow

TensorFlowはGoogleがオープンソースとして公開した機械学習のライブラリ。
www.tensorflow.org

ここしばらく機械学習の本読んで、TensorFlow触りまくって出した結論はこれ。

TensorFlowは機械学習の初心者がスグにカンタンに使えるモノではない

TensorFlowを使えば機械学習の概念をそのまま直感的にコードに落としこむことができる。ただ、そのためには機械学習の理論を予め知っておくことが必要。「ニューラル・ネットワーク」とか「構造パターンマイニング」とかの用語が分からないといちいちそこで手を止めて、調べる必要が出てくる。

ただ数学好きであれば、全てが数式で表現される世界が妙に楽しい。アルゴリズムや使い方さえ分かれば、かなりのレベルで面白いモノが実装できることは確かだ。

TensorFlowのインストール(MacOS編)

まーここ見てインストールしても一緒だけど、一応書いておく。だいたい5分もあれば完了する。
https://www.tensorflow.org/versions/master/get_started/os_setup.html

pythonのバージョン確認。2.7以上であればOk

$ python -V
Python 2.7.10

pip をインストール

$ sudo easy_install pip

virtualenv をインストール

$ sudo pip install --upgrade virtualenv

virtualenv 環境を~/tensorflow に作成(もし別の場所に入れたければフォルダの指定を変える)

$ virtualenv --system-site-packages ~/tensorflow

tensorflowをアクティベートする。実行後、コマンドプロンプトの表示が (tensorflow)$になる。

$ source ~/tensorflow/bin/activate

TensorFlowをインストール

(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl

おわり。

カンタンなPythonプログラムの作成

小難しい理屈の前に「なんでもいいから動かしたい!」の気持ちにお応えして、Python未経験者でもカンタンに分かるPythonのコードから始める。

x = 1
y = x + 2
print(y)

このコードを書いてtest.pyとかの名前で保存。
で、実行すると

(tensorflow)$ python test.py
3

当然ながら3という結果が出る。

TensorFlowでカンタンなPythonプログラムを書き直す

次にこれをちょっとTensorFlow風に書き直してみる。

import tensorflow as tf

x = tf.constant(1, name='x')
y = tf.Variable(x + 2, name='y')

print(y)

test2.pyで保存して実行した結果がこれ。

(tensorflow) $ python test2.py
<tensorflow.python.ops.variables.Variable object at 0x10f6e5110>

なんか明らかに違うぞ、と。
理由はひとつ前のコードとは異なる処理を実行しているから。

test2.pyのコードを1行ずつ処理内容を解説する

  1. tensorflow moduleをインポートして、それをtfとする
  2. constant value作って、それをxとする。そのxに数字の1を入れる
  3. 変数作って、それをyとする。そのyの定義をx+2と同じ、とする
  4. yを出力する

つまり微妙な違いはyが定義されただけで、ひとつ前のコードのように数値がまだ入っていなかった。

これをちゃんとしたコードに修正するとこうなる。

import tensorflow as tf

x = tf.constant(1, name='x')
y = tf.Variable(x + 2, name='y')

model = tf.initialize_all_variables()

with tf.Session() as session:
    session.run(model)
    print(session.run(y))

1行ごとの解説

  1. tensorflow moduleをインポートして、それをtfとする
  2. constant value作って、それをxとする。そのxに数字の1を入れる
  3. 変数作って、それをyとする。そのyの定義をx+2と同じ、とする
  4. 変数をinitialize_all_variablesで初期化する
  5. 実行するためのsession作る
  6. 4で作ったモデルを実行する
  7. yを実行して出力する

すると結果はこの通り3となる。

(tensorflow) hellow $ python test2.py
can't determine number of CPU cores: assuming 4
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 4
can't determine number of CPU cores: assuming 4
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 4
3

 

入門編1のまとめ

上記の例だけでは「面倒くさー」と思うかもしれないが、これはあくまでカンタンな例だからだ。そしてこの辺りが通常のコードとTensorFlowがちょっと違う箇所になる。
「こんなカンタンなのじゃなくて『自然言語処理』とか『未来予想』なんかを解説しろよ」と思われた方は、まずはここが分かってないと後で結局またここに戻ってくることになってしまうので、まずはここから書いた。
AlphaGoが囲碁の世界チャンピオンを負かしたニュースに心がザワついて、しゃべりかけるだけでステキな反応を返すAmazonEchoに心をときめかせた方ならきっとTensorFlowを使った機械学習の世界にのめり込んでしまう。いやー機械学習オモロイ!熱い!

この入門書が本格的に面白くなってくるのは次回以降ということで。

エンジニアの皆様へ

ほとんどのエンジニアには解けるが、下位10%のダメなエンジニアにだけ解けないパズル?」なるものをシリーズ化していくつか作成した。もしご興味あれば解いてみてください。ちなみに本パズルはTensorFlowは関係ないです。
http://tango-ruby.hatenablog.com/entry/2015/11/30/122814

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away