自学自習の練習(笑)として,初めに復習がてらtensorflow 1.xについての内容を書いていこうと思います.
対象となる環境は
- Python 3.0
- tensorflow 1.11.0
です.古い環境なのですが,練習なのであまり気にせずにやっていきます.
tensorflowとは
tensorflowは最近Deep Learningを実行するために使えるライブラリとして有名ですね.
tensorflowは名前がtensor(=テンソル≒行列)とflow(=流れる)ということで,テンソル計算用のライブラリになっています.
tensorflowは主に機械学習のために作られたライブラリです.
tensorflowの処理形式
tensorflowはPythonのように,定義を実施した瞬間に実行される形式ではなく,式を定義後,実行のための処理を呼んで初めて実行するという形式を取ります。実際のtensorflowでは、特殊な形で処理を行っていますが、個人的には関数をmain methodの中で呼び出しているイメージでいいと思います。言葉だけではわかりにくいので下にC言語での例を書いておきます。
//テンソルの処理方法を記載する関数を定義
int Session(int arg1,int arg2){
//処理内容を記載
return arg1+arg2;
}
void main(){
//Session関数を呼び出し
int c=Session(1,2);
//cには3が入る
}
イメージはつきましたか?ついたなら幸いです。なぜこんなにぐちぐちと書いたかというと、私は初めてtensorflowを勉強した時に躓いたことがこの部分だったからです。私は、ライブラリをインポートしてmain method内にすべての処理を書けばいいと思っていたのでそこで突っかかってしまいました(笑)。
さて、話を戻して、tensorflowでは上の仮想言語で示したSession関数の部分をセッションと呼ぶそうです。このセッションですが、基本的に1つの式の処理しかできません。また、一般的な引数でのやり取りや、内部での定数の指定などはできません。引数を渡したり、定数を用意したり、変数を用意したり、四則演算を行う際には特別な書き方をする必要があります。具体的な書き方は明日にでも上げていこうと思います。
では、今日はセッションの定義、セッションの実行方法のみやってみようと思います。以下にテストコードとその実行結果を示します。
#ライブラリのインポート
import tensorflow as tf
import numpy as np
#セッションの定義
# 今回はあまり気にしない部分
# 定数を定義
const1=tf.constant(5)
const2=tf.constant(10)
const3=tf.constant(-2)
# 足し算
add1=tf.add(const1,const2)
add2=tf.add(const1,const3)
# 気にしない部分終了
#セッションの定義終了
#セッションの取得
session=tf.Session()
#セッションの実行
return_add1=session.run(add1)
return_add2=session.run(add2)
#セッションの戻り値の表示
print("session=add1 :",return_add1)
print("session=add2 :",return_add2)
<実行結果>
session=add1 : 15
session=add2 : 3
このテストコードからも分かるように、セッションとは、一つの計算式を実行するものです。基本的にtensorflow(tf).Session.run()メソッドの引数に渡した数式が実行される形です。この数式のことを専門的には計算グラフと言いますが、このブログ内では分かりやすく式と呼称します。また、式を渡すということでセッション内部でのif文での分岐や文字列の処理などはできないことがわかります。if文などでの処理を行いたい場合には「式Aの戻り値をif文で処理して式Bに渡す」や、数式的に処理するようにする必要があります。
今日の内容は以上!
まとめ
- tensorflowはテンソル計算用のライブラリ
- tensorflowは1度に1つの数式しか処理できない
- 数式の実行法:tensorflow.Session().run(数式が格納された変数)