TensorFlowは、計算グラフを構築して計算を実行するデータフロープログラミングを採用しています。計算グラフの実行パラダイムについては以下の記事で解説しました。

ビッグデータを分散学習するDeep LearningライブラリTensorFlowとは /tensorflow/2016/12/30/what-is-tensorflow.html

最初は、Pythonの算術演算とは違うため混乱するかもしれません。計算グラフの構築はTensorFlowの関数APIを基本的には使っていきます。

本記事では、TensorFlowの基本的な算術演算の種類をまとめて、実行例を示します。本記事を通して、計算グラフの構築と実行の仕方について慣れていきましょう。

算術演算の関数API

対応演算子があるものは表記しています。テンソル同士を演算子のオーバーロードを使ってTensorFlowの関数APIを呼び出すことができるようになっています。

tf.add

テンソルの要素の和です。対応演算子は+です。

tf.add(x, y, name=None)

params:

パラメータ名 概要
x Tensorの型  
y Tensorの型  
name string 変数の名前。デフォルトでは自動でユニークな名前を割り当てます。

returns:

x + yの計算結果を表すNodeのテンソルを返します。

実行例は以下の通りです。

In [1]: import tensorflow as tf

In [2]: a, b = tf.constant(2), tf.constant(3)

In [3]: with tf.Session() as sess:
   ...:     print(sess.run(tf.add(a, b)))
   ...:     print(sess.run(a + b))
   ...:
5
5

tf.subtract

テンソルの要素の差です。対応演算子は-です。

tf.subtract(x, y, name=None)

params:

パラメータ名 概要
x Tensorの型  
y Tensorの型  
name string 変数の名前。デフォルトでは自動でユニークな名前を割り当てます。

returns:

x - yの計算結果を表すNodeのテンソルを返します。

実行例は以下の通りです。

In [1]: import tensorflow as tf

In [2]: a, b = tf.constant(2), tf.constant(3)

In [3]: with tf.Session() as sess:
   ...:     print(sess.run(tf.subtract(a, b)))
   ...:     print(sess.run(a - b))
   ...:
-1
-1

tf.multiply

テンソルの要素の掛け算です。対応演算子は*です。

tf.multiply(x, y, name=None)

params:

パラメータ名 概要
x Tensorの型  
y Tensorの型  
name string 変数の名前。デフォルトでは自動でユニークな名前を割り当てます。

returns:

x * yの計算結果を表すNodeのテンソルを返します。

実行例は以下の通りです。

In [1]: import tensorflow as tf

In [2]: a, b = tf.constant(2), tf.constant(3)

In [3]: with tf.Session() as sess:
   ...:     print(sess.run(tf.multiply(a, b)))
   ...:     print(sess.run(a * b))
   ...:
6
6

tf.divide

テンソルの要素の割り算です。対応演算子は/です。tf.truedivと同義です。

tf.divide(x, y, name=None)

params:

パラメータ名 概要
x Tensorの型  
y Tensorの型  
name string 変数の名前。デフォルトでは自動でユニークな名前を割り当てます。

returns:

x / yの計算結果を表すNodeのテンソルを返します。

実行例は以下の通りです。

In [1]: import tensorflow as tf

In [2]: a, b = tf.constant(2), tf.constant(3)

In [3]: with tf.Session() as sess:
   ...:     print(sess.run(tf.divide(a, b)))
   ...:     print(sess.run(a / b))
   ...:
0.6666666666666666
0.6666666666666666

tf.floordiv

テンソルの要素の割り算です。結果の小数点以下は切り捨てになります。対応演算子は//です。

tf.floordiv(x, y, name=None)

params:

パラメータ名 概要
x Tensorの型  
y Tensorの型  
name string 変数の名前。デフォルトでは自動でユニークな名前を割り当てます。

returns:

x // yの計算結果を表すNodeのテンソルを返します。

実行例は以下の通りです。

In [1]: import tensorflow as tf

In [2]: a, b = tf.constant(2), tf.constant(3)

In [3]: with tf.Session() as sess:
   ...:     print(sess.run(tf.floordiv(a, b)))
   ...:     print(sess.run(a // b))
   ...:
0
0

tf.mod

テンソルの要素の除算です。対応演算子は%です。tf.floormodと同義です。

tf.mod(x, y, name=None)

params:

パラメータ名 概要
x Tensorの型  
y Tensorの型  
name string 変数の名前。デフォルトでは自動でユニークな名前を割り当てます。

returns:

x % yの計算結果を表すNodeのテンソルを返します。

実行例は以下の通りです。

In [1]: import tensorflow as tf

In [2]: a, b = tf.constant(2), tf.constant(3)

In [3]: with tf.Session() as sess:
   ...:     print(sess.run(tf.mod(a, b)))
   ...:     print(sess.run(a % b))
   ...:
2
2

tf.pow

テンソルの要素の累乗です。対応演算子は**です。

tf.pow(x, y, name=None)

params:

パラメータ名 概要
x Tensorの型  
y Tensorの型  
name string 変数の名前。デフォルトでは自動でユニークな名前を割り当てます。

returns:

x ** yの計算結果を表すNodeのテンソルを返します。

実行例は以下の通りです。

In [1]: import tensorflow as tf

In [2]: a, b = tf.constant(2), tf.constant(3)

In [3]: with tf.Session() as sess:
   ...:     print(sess.run(tf.pow(a, b)))
   ...:     print(sess.run(a ** b))
   ...:
8
8

まとめ

本記事では、TensorFlowの基本的な算術演算子の使い方について解説しました。

本記事を通して、算術演算子の関数APIについて知っておくと役に立つはずです。

参考