こちらも有名店ですね。トッピングがネギと薬味だけの「素つけ麺」のメニューには驚きましたが、この潔さも自信の証でしょうか。実際にスープ、麺には非常にこだわりを感じます。スープの器が温められているのもまた嬉しいですね。平日の14時半に行って2時間待ちとは。次の有給付与日のために、そろそろお店選びをはじめたいところ。前回はTensorFlowを使った深層学習で何ができるのかを見ていきました。このブログでは当面、TensorFlowのチュートリアルやサンプルコードを題材にしていく予定です。Learningを気軽に利用できるレベルになれれば楽しそうですよね。今回はTensorFlowの仕組みやPythonのエコシステムを少し追ってみましょう。本題に入る前に、深層学習の理解を深める書籍・講座を紹介させてください。(KS情報科学専門書)タイトルから受ける印象と違い、数式がたくさん出る濃い内容になっています。これから理論をしっかり学んでいきたい方を対象にしています少しですがChainerやTensorFlowなどのサンプルコードも記載されていますいずれも2016年2月末に刊行されています。Learningの基本が無料で学べる講座。講義の中ではTensorFlowも利用されています。SequencesTensorFlowがリリースされたのは昨年(2015年)11月のこと。関わらず書籍や講座が増えはじめており、日々注目が高まっているのを感じますね。TensorFlowを理解する5つの要素それでは本題に入ります。TensorFlowの仕組みを理解するうえで、以下5つの要素をおさえておきましょう。session(セッション)データフローグラフで計算を実行するために、まず、セッションクラスをインスタンス化して利用することで、tensorflowのシステムと情報をやり取りできるようになりますそして、runメソッドを実行します。runされるまで、データフローグラフの演算処理は実行されませんサンプルコードからデータフロー・グラフの作成、演算の実装方法を読み解く要素を理解したところで、TensorFlowの構造をさぐっていきます。programからの引用です。sess.run(a+b)42>>このサンプルコードはTensorFlowのライブラリーを利用して、次の2点を行っています。上記2点を少し深堀りして、理解を深めてみましょう。constantで文字列定数のopを作成しています。opは、テンソルとしてのデータを保持し、デフォルトのグラフへnodeとして加えられます。ここで、helloの中を見てみるとopに紐付いたTensorオブジェクトなのが分かりますね。0x7f51a8b800d0>下のように書き換えると、string型の変数に代入したことになります。TensorFlow!'グラフ演算をする必要がなければこのようにプログラミングします。データフローグラフの作成はできたのでグラフ演算を実行します。グラフ演算を実行するにはSessionクラスをインスタンス化し、オブジェクトのrunメソットを実行する必要があります。このとき、求めたいテンソルを引数に渡していますね。sess.run(y)と同じことですね。データフローグラフを描くと下記のとおりになると思います。これと、先ほどのyの中を見て、比べてみましょう。dtype=int32)テンソルが次元の単位(rank)、形状(shape)、静的な型(type)で構成されているのが見えてきますね。それでは次にIntroductionを見てみましょう。[0.3]最急降下法というアルゴリズムを利用した、最適化問題の1つです。このサンプルコードでは、yとy_dataの平均二乗誤差lossを最小にするよう学習しています。sess.run(b))を表示しているのですね。このようにTensorFlowでは、最適化問題を扱うためのクラスが色々揃っています。※この学習を繰り返すとなります。TensorFlowにおけるグラフ演算の実装の流れが見えてきましたね。深層学習に必須なモジュールNumPy先ほどのサンプルコードで出てきたNumPyの特徴とメリットを見てみましょう。NumPyとはPythonの拡張モジュールSciPy(Pythonの数学・科学・工学モジュール類をまとめたパッケージ)のうちの1つベクトルや行列、画像などを表現するための配列オブジェクトや線形代数の関数など備わっているNumPyを使うメリットC言語で実装されており高速数値演算に向くデータが主記憶上で連続した領域に格納されるためCPUサイクルとキャッシュを効率良く使える深層学習はひたすら行列の計算を繰り返します。行列計算を高速処理できることはきわめて重要です。深層学習ではNumPyライブラリーを大いに使っていきましょう。煩雑なPythonエコシステムを整理するさきほど紹介したNumPyなど科学計算のモジュールが豊富にそろうPython。数が多い反面、どのモジュールを使えばいいのか混乱しがちです。Pythonの略)と言います。ここではSciPyコアパッケージを整理してみます。科学計算環境としてのPythonの歴史を見てみましょう。1990年代後半からPythonで数値データを扱うためのツールが構築されはじめました。当時開発されたNumericが発展したものがNumPy。このNumPyの上に構築されたのが数値計算アルゴリズムを実装したSciPyです。2000年代初頭には科学技術用のグラフ描画ライブラリとしてMatplotib、対話型シェルIPythonが続けて開発されました。2000年代後半になるとデータ解析ライブラリのpandas、記号処理用ライブラリのSympyが開発されています。機械学習の1つである深層学習は主にNumPyを利用します。機械学習全般となるとエコシステムの多くのモジュールを使うことになります。混乱するようなことがあれば、この概要を思い出して整理すると良いかもしれません。慣れない方には煩雑ではありますが、充実したエコシステムがあるのはPythonの強みです。おわりにサンプルコードを使ってTensorFlowの仕組みを見ていきました。データフロー・グラフに関して何か気づきがあった方がお一人でもいましたら嬉しい限りです。Inc.お知らせぐるなびでは一緒に働く仲間を募集しています。かわしま深層学習がメインのフルスタックエンジニア。週末は子供の頃より続けている剣道でリフレッシュしてます。美味しいお店探しも好きで、妻とよく食べ歩きをします。google.setOnLoadCallback(initialize);スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。