TensorFlow始めました その2。placeholderを使う。

TensorFlow始めました。の続きです。

前回は、定数3と定数4の加算器をTensorFlowでグラフ化して実行してみました。今回は加算器に外部からデータをどうやって渡すのか、を勉強します。

1. グラフの構築(モデル化)

モデルに対して、外部からデータを渡すための窓口を作ります。それを実現するのがplaceholderです。

placeholderでaとbを作っています。これがモデルへの入力となり、実行セッションでデータを渡します。

グラフの構築というよりも、モデル化という方がしっくりきますね。ソフトウェアを書いているのではなく、加算器という回路を記述しているような感覚がします。

 

モデルをグラフで図示しました。

 

2. データの準備

aとbへ渡すデータのペアを作っておきます。1組だとつまらないのでリストにしました。

 

 3. 実行

次のコードで実行します。

“sess.run”の部分で加算が行われています。引数”feed_dict”でplaceholder a及びbのそれぞれに、alist及びblistを渡していて、加算結果が”ans”に代入されます。

実行結果は次のとおりです。ピッタリではありませんが、ほぼほぼ合っています。placeholder aとbには、型としてtf.float32という32bit長の浮動小数を指定しました。計算結果に誤差があるのは、ft.float32の分解能によるものです。

 

話がデータ型に及んだことですし、tensorに収めることが出来るデータ型の種類tf.Dtypeを挙げておきます。

class tf.DType
The following DType objects are defined:

tf.float16: 16-bit half-precision floating-point.
tf.float32: 32-bit single-precision floating-point.
tf.float64: 64-bit double-precision floating-point.
tf.bfloat16: 16-bit truncated floating-point.
tf.complex64: 64-bit single-precision complex.
tf.complex128: 128-bit double-precision complex.
tf.int8: 8-bit signed integer.
tf.uint8: 8-bit unsigned integer.
tf.uint16: 16-bit unsigned integer.
tf.int16: 16-bit signed integer.
tf.int32: 32-bit signed integer.
tf.int64: 64-bit signed integer.
tf.bool: Boolean.
tf.string: String.
tf.qint8: Quantized 8-bit signed integer.
tf.quint8: Quantized 8-bit unsigned integer.
tf.qint16: Quantized 16-bit signed integer.
tf.quint16: Quantized 16-bit unsigned integer.
tf.qint32: Quantized 32-bit signed integer.
tf.resource: Handle to a mutable resource.

TensorFlow API r1.0

 

最後に全コードを掲載します。

 

TensorFlowのチュートリアルに、一次直線y = w x + bの傾きwと切片bを機械学習によって導き出すっていうサンプルがあります。次回はこれを勉強してみようかと思います。