Navigation

ラベル Programming の投稿を表示しています。 すべての投稿を表示
ラベル Programming の投稿を表示しています。 すべての投稿を表示

2017年1月13日金曜日

TensorFlowとJupyterの起動確認まで

本日、TensorFlowを動かすための環境構築を行いました。

Mac OS X Mountain LionからEl Capitanへのアップグレード
まずはYosemiteへのアップグレードをしようとしたんですが、既にダウンロードが不可能になっており、El Capitanにアップグレードしました。

Dockerのインストール
インストールは出来たのですが、立ち上げようとすると、Fatal Errorということで下記のような表示が出ます。
Incompatible CPU detected.
Docker requires a processor with virtualization capabilities.
To learn more about this issue see:

CPUがだめなら仕方がないので、やはりDockerをあきらめ、Canopyで使用できるようにセットアップを進めました。OSレベルで問題ないのに、CPUで弾かれてしまうってことがあるんですね。。

TensorFlowの起動確認
まずは、既にインストール済みのTensorFlowの動作確認
下記が実行コマンドです。
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print sess.run(hello)


残念ながら、以前同様ImportError: dlopen ...... mach-o, but wrong architectureといったエラーが出てしまいます。

下記ページを見てみると、TensorFlowでは64bitのPythonが使用されるが、32bitのPythonしかないと出るエラーのようです。
http://stackoverflow.com/questions/36807691/error-importing-tensorflow-because-of-wrong-architecture

そこで、下記ページのMac OS X 64-bit/32-bit installerへと進み、インストールを実行
https://www.python.org/downloads/release/python-2713/

そして、改めて下記の手順でTensorFlowをインストール
# Mac OS X
$ sudo easy_install pip
$ sudo easy_install --upgrade six
# Mac OS X, GPU enabled, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow-0.11.0rc0-py2-none-any.whl
# Python 2
$ sudo pip install --upgrade $TF_BINARY_URL
そのあとに、再びterminalでpythonをコマンドし、下記コードを実行

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print sess.run(hello)

その後、ついに出ました"Hello, TensorFlow" !長かったです。
しかしながら、terminalでは動作するものの、Canopyで動くか不安で試してみたところ、やはり"but wrong architecture"のエラーが出ます。

Jupyterのインストールと起動確認
64bitのダウンロードを行おうと思いましが、Jupyterが動作するか試してみたく、再度インストールを実行

$ pip install jupyter

途中、Mac OSから必要なコンポーネントをダウンロードするようにポップアップが出たので、ダウンロード。このコンポーネントのインストールが完了するまでは、jupyterもインストールできないようにで、一度エラーになりました。その後、再度インストールコマンドを実行し、下記コマンドを実行
$ jupyter notebook

無事、ブラウザでjupyterが立ち上がりました。
ようやく環境構築が完了です。

2017年1月12日木曜日

TensorFlowでディープラーニングを学びたい

AI(人工知能)について学ぶにあたり、TensorFlowでコード書きながら深層学習(ディープラーニング)を学ぼうとし、『TenrsoFlowで学ぶディープラーニング』を読みながら環境構築しようとしているのですが、苦戦しています。
TensorFlow(テンソルフロー、テンソーフロー)とはGoogleによって提供されている、機械学習/ディープラーニング/多層ニューラルネットワークライブラリです。オープンソースとして提供されています。


こちらの書籍では環境構築をシンプルに行うために、Docker用のコンテナイメージが用意されているのですが、DockerをインストールできるのはMac OS X Yosemite以降。

Mac OS Xの名前はやはりネコ科の動物の名前に限る!というこだわりと、インストール済みのアプリケーションが正しく動作するか不安で私が使用しているMac BookのOSは10.8 Mountain Lionのままのため、Dockerが使用できません。

Jupyterのインストールもうまくいかず、既にインストール済みCanopyを使用し、コードを書いていくしかないかなと決めたのですが、TensorFlowが正しくimportできません。Q&Aサイトをみても、簡単そうな解決方法が見つかりません。

Mountain Lionで動いている各アプリケーションがどこまで動作するかはわかりませんが、私にとって一番重要なOpenOfficeについてはYosemiteでサポートされているようなので、今夜あたり、しぶしぶアップグレードするしかないのかなと考えています。。。

久しぶりにMacのTerminalを立ち上げ、小一時間程、色々と設定を試しましたが、やっぱりすんなりいかないですね。

わがままかもしれませんが、こういった新しいテクノロジーを学ぶ際、何も考えず、何もインストールせずにブラウザで使用開始できるように、Webアプリケーションとして、提供してもらいたいですね。

2017年1月6日金曜日

Artificial intelligenceとProlog

VCフレッド・ウィルソンのブログで2017年のテクノロジー業界予測が述べられています。
What Is Going To Happen In 2017

この中で取り上げたいのが、下記のAIに言及した箇所です。

AI will be the new mobile. Investors will ask management what their “AI strategy” is before investing and will be wary of companies that don’t have one.

「AIは新しいモバイルになるだろう」モバイルがビジネスに与えたのと同じくらいのインパクトをAIが与えるという意味かと思います。

そして、投資家達は投資に際し、経営陣にAIに関する戦略について質問し、戦略を有しない会社に対しては投資に慎重になるだろうとのことです。

私がAIに興味を持ったきっかけは、仕事で携わっているPrologという言語がIBM WatsonやSoftbank Pepperのコアで使用されているのを知ったことです。

仕事で使っていたのはProlog自体ではなく、Prologをベースにした言語で、あまりオープンな言語ではないので、名前をxとしておきます。便宜的に、この記事では x = Prologとして読んでください。

xは、Prologをベースにオブジェクト指向の特徴を取り入れた言語で、言うならばx = Java + Prologのような感じです。詳細については、wikipediaや「Prolog 入門」と検索して頂ければ見つかると思うので、そちらを参照ください。

xでは、Prologの特徴であるPredicate (述語)という形式でプログラムを書くことができます。
私がPrologで面白いなと思ったのは、このPredicateのおかげで条件分岐をコーディングする際に、if 文を書く必要がないということです。

保険会社で働いていたので、保険商品に関しコーディングすることが多かったのですが、皆さんご存知のように保険は複雑な商品ですので、コーディングも複雑になります。保険自体や付帯している特約、及び保障金額ごとに、異なった処理を行う必要があるため、結果、条件分岐が複雑になってしまいます。

従来の言語ですと、if then elseを入れ子にしたり、case文などで、コーディングを行う際のビジネスルールをもとに「静的(あとから変更が不可能、もしくは極めて難しい)」に実装を行うことになるのかと思います。が、xではPredicateを用いることにより、各ルールを「読みやすく」かつ「動的(あとから変更がしやすい)」に記述することができます。

「動的」に条件分岐がコーディング可能というのが、PrologがAI実装に利用される理由の一つかと思います。if then elseとPredicateの例に説明しようと思ったのですが、時間がかかるため今回は割愛し、後日追加致します。