import tensorflow as tf matrix1 = tf.constant([[3., 3.]]) matrix2 = tf.constant([[2.],[2.]]) product = tf.matmul(matrix1, matrix2) sess = tf.Session() result = sess.run(product) print(result) sess.close()
3 行目: 1×2 行列を生成する constant(定数) OP を作成します。OP はノードとしてデフォルトグラフに追加されます。
4 行目: 2×1 行列を生成するもう一つの constant を作成します。
6 行目: ‘matrix1’ と ‘matrix2’ を入力として取る Matmul OP を作成します。戻り値 ‘product’ は行列の乗算の結果を表します。
8 行目: デフォルト・グラフを launch します。
10 行目: matmal OP を動作させるために、matmal OP の出力を表す ‘product’ を渡して sessioin ‘run()’ メソッドを呼び出します。
これは呼び出しに対して matmul OP の出力を返してもらうことを望むことを指示しています。OP に必要な全ての入力はセッションにより自動的に動作します。これらは典型的には並行して動作します。
OP の出力は ‘result’ に numpy `ndarray` オブジェクトとして返されます。=> [[ 12.]]
13 行目: 終了したらセッションを閉じます。
“with” ブロックでセッションに入ることもできます。セッションは with ブロックの最後に自動的に閉じます。
import tensorflow as tf matrix1 = tf.constant([[3., 3.]]) matrix2 = tf.constant([[2.],[2.]]) product = tf.matmul(matrix1, matrix2) with tf.Session() as sess: result = sess.run([product]) print(result)
TensorFlow の実装はグラフ定義を例えば CPU や GPU カードの一つのような、利用可能な計算資源に渡り分散された実行可能な処理に翻訳します。一般には CPU あるいは GPU を明示的に指定しなくてもかまいません。もし一つを有する場合、TensorFlow は最初の GPU をできる限り多くの処理で使用します。
もし貴方のマシン上で利用可能な1つ以上の GPU を持つ場合、最初のものを超えて GPU を利用するためには、それに OPs を明示的に割り当てなければなりません。どの CPU あるいは GPU を処理のために使用するかを指定するためには with…Device ステートメントを使用します :
import tensorflow as tf with tf.Session() as sess: with tf.device("/gpu:1"): matrix1 = tf.constant([[3., 3.]]) matrix2 = tf.constant([[2.],[2.]]) product = tf.matmul(matrix1, matrix2) result = sess.run([product]) print(result)
デバイスは文字列で指定されます。現在サポートされるデバイスは :
"/cpu:0": 貴方のマシンの CPU。 "/gpu:0": 貴方のマシンの GPU、もし一つを持つのであれば。 "/gpu:1": 貴方のマシンの2つ目の GPU, etc.
GPU と TensorFlow についての詳細は Using GPUs を参照してください。
【参考】
(翻訳/解説)TensorFlow : GET STARTED : 基本的な使い方