TensorFlowの計算グラフはTensor型のノードを作成し、データフローで操作するものです。

特定のNodeを作成するためには、ノードの型を指定することができます。適切な型を選択することで、効率的に処理できたり、最適化が効いて高速になることがあります。

本記事では、TensorFlowで使用されるTensorのdtypeのリストを紹介します。

テンソルのdtypeを確認する方法

作成したテンソルは.dtypeプロパティにアクセスすることでどのデータ型が採用されているかを確認することができます。

例えば、以下のようにconstantdtypeなして指定したとしても、テンソルには自動で型が割り当てられていることが分かります。

In [1]: import tensorflow as tf

In [2]: a = tf.constant(32)

In [3]: a.dtype
Out[3]: tf.int32

In [4]: b = tf.constant('Hello')

In [5]: b.dtype
Out[5]: tf.string

In [6]: c = tf.constant(32, dtype=tf.int8)

In [7]: c.dtype
Out[7]: tf.int8

aでは何も指定していない場合になりますが、.dtypeプロパティにアクセスすることでtf.int32が使用されていることが分かります。cでは、dtypeを指定することで特定のデータ型になっていることが確認できます。

データ型一覧

TensorFlowのテンソルに指定できる型をまとめます。

int (符号付きの整数)

データ型 概要
tf.int8 8ビットの符号付き整数
tf.int16 16ビットの符号付き整数
tf.int32 32ビットの符号付き整数
tf.int64 64ビットの符号付き整数

uint (符号なしの整数)

データ型 概要
tf.uint8 8ビットの符号なし整数
tf.uint16 16ビットの符号なし整数
tf.uint32 2ビットの符号なし整数
tf.uint64 64ビットの符号なし整数

qint (量子化された整数)

データ型 概要
tf.qint8 8ビットの量子化済み整数
tf.qint16 16ビットの量子化済み整数
tf.qint32 32ビットの量子化済み整数
tf.quint16 16ビットの量子化済み符号なし整数

float (浮動小数点数)

データ型 概要
tf.float16 16ビットの浮動小数点数
tf.float32 32ビットの浮動小数点数
tf.float64 64ビットの浮動小数点数
tf.bfloat16 指数部8ビット・仮数部7ビットの浮動小数点数

complex (複素数)

データ型 概要
tf.float16 16ビットの浮動小数点数
tf.float32 32ビットの浮動小数点数
tf.float64 64ビットの浮動小数点数
tf.bfloat16 指数部8ビット・仮数部7ビットの浮動小数点数

bool (真偽値)

データ型 概要
tf.bool TrueかFalseで表される、真偽値。データ量としては8ビット

string (文字列)

データ型 概要
tf.string 文字列を表す型

resource (変更されうるリソース)

データ型 概要
tf.resource ファイルなどのリソースを表す型

variant (任意の型)

データ型 概要
tf.variant 任意の型の値

tf.castでデータ型を変換する

tf.castを使用すると、以下のように後からデータ型を変更することができます。IPythonではそのまま変数名書いてEnterを押すとtf.Tensorの情報を見ることができます。

In [1]: import tensorflow as tf

In [2]: a = tf.constant([True, False])

In [3]: a
Out[3]: <tf.Tensor 'Const:0' shape=(2,) dtype=bool>

In [4]: b = tf.cast(a, tf.int32)

In [5]: b
Out[5]: <tf.Tensor 'Cast:0' shape=(2,) dtype=int32>