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.int8aでは何も指定していない場合になりますが、.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>
人工知能の今と一歩先を発信するメディア