TensorFlowの計算グラフはTensor型のノードを作成し、データフローで操作するものです。
特定のNodeを作成するためには、ノードの型を指定することができます。適切な型を選択することで、効率的に処理できたり、最適化が効いて高速になることがあります。
本記事では、TensorFlowで使用されるTensorのdtype
のリストを紹介します。
テンソルのdtypeを確認する方法
作成したテンソルは.dtype
プロパティにアクセスすることでどのデータ型が採用されているかを確認することができます。
例えば、以下のようにconstant
をdtype
なして指定したとしても、テンソルには自動で型が割り当てられていることが分かります。
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>