TensorFlow

【TensorFlow】Tensorの型変換方法

【TensorFlow】Tensorの型変換方法

Googleによって開発されている機械学習ライブラリであるTensorFlowで、Tensorの型を変換する方法を解説します。

Tensorの型変換

TensorFlowでディープラーニングの各種モデルを構築する際にはデータ型を意識する必要があります。

例えば、一部のメソッドでは処理できない型(例えはintは対象外など)がある場合がありますし、ディープラーニングではメモリを多く使用しますので、メモリを節約するためにメモリ消費の少ない型にしたいという場合もあります。

このような場合には、型変換を行うことで対応します。TensorFlowでは、型変換のためのtf.castが用意されてます。以降では、TensorFlowでのTensorの型を変換する方法について紹介します。

Tensorの型

Tensorの型としては以下のような型があります。Tensor情報の確認方法としては「Tensor情報の確認方法」で紹介していますが、dtypeプロパティで確認することができます。

概要
tf.float1616ビット浮動小数点
tf.float3232ビット浮動小数点
tf.float6464ビット浮動小数点
tf.int88ビット整数
tf.int1616ビット整数
tf.int3232ビット整数
tf.int6464ビット整数
tf.uint8符号なし8ビット整数
tf.string文字列
tf.bool真偽値
Note

上記はTensorのデータ型の一部です。他のデータ型を確認したい方は、tf.dtypesの公式ドキュメントのこちらを参照してください。

Tensorの型変換の方法 tf.cast

TensorFlowにおいて、Tensorの型を変換する場合には以下のようにtf.castを使用します。

import tensorflow as tf

tensor = tf.constant([1, 2, 3, 4, 5])
print(tensor, "\n")

# Tensorの型を変換する
tensor_float16 = tf.cast(tensor, dtype=tf.float16)
print(tensor_float16)
tensor_float32 = tf.cast(tensor, dtype=tf.float32)
print(tensor_float32)
tensor_float64 = tf.cast(tensor, dtype=tf.float64)
print(tensor_float64)
【実行結果】
tf.Tensor([1 2 3 4 5], shape=(5,), dtype=int32) 

tf.Tensor([1. 2. 3. 4. 5.], shape=(5,), dtype=float16)
tf.Tensor([1. 2. 3. 4. 5.], shape=(5,), dtype=float32)
tf.Tensor([1. 2. 3. 4. 5.], shape=(5,), dtype=float64)

上記の例では、int32であった型をfloat16, float32, float64といった型に変換している例です。上記は一例であり、同じように色々な型変換ができますので、色々な変換を試してみていただけるとよいかと思います。

Note

tf.castの公式ドキュメントはこちらを参照してください。

まとめ

Googleによって開発されている機械学習ライブラリであるTensorFlowで、Tensorの型を変換する方法を紹介しました。Tensorの型変換では、tf.castで変換先の型を指定することで実行できます。

TensorFlowのメソッドを使用していると処理できない型等でエラーとなることがあります。そのような際には、型変換をして実行を試してみましょう。

また、ディープラーニングでは大規模なデータセットやモデルになってきた場合に、メモリ消費量が少ない型に変換してメモリを節約したいといった場合もあります。このような際にも適切に型変換をできる必要があるでしょう。

状況に応じて適切に型変換できるようにtf.castの使い方は覚えておいてもらうとよいかと思います。

Pythonによるディープラーニング」はTensorFlow/Kerasの中~上級者向けの本ですが非常におすすめです。CNN, RNN, Transformer, GAN等高度なモデルも扱っており面白い&TensorFlow/Kerasの実装力をつけることができます。