Googleによって開発されている機械学習ライブラリであるTensorFlowで、Tensorの型を変換する方法を解説します。
Tensorの型変換
TensorFlowでディープラーニングの各種モデルを構築する際にはデータ型を意識する必要があります。
例えば、一部のメソッドでは処理できない型(例えはintは対象外など)がある場合がありますし、ディープラーニングではメモリを多く使用しますので、メモリを節約するためにメモリ消費の少ない型にしたいという場合もあります。
このような場合には、型変換を行うことで対応します。TensorFlowでは、型変換のためのtf.castが用意されてます。以降では、TensorFlowでのTensorの型を変換する方法について紹介します。
Tensorの型
Tensorの型としては以下のような型があります。Tensor情報の確認方法としては「Tensor情報の確認方法」で紹介していますが、dtypeプロパティで確認することができます。
型 | 概要 |
---|---|
tf.float16 | 16ビット浮動小数点 |
tf.float32 | 32ビット浮動小数点 |
tf.float64 | 64ビット浮動小数点 |
tf.int8 | 8ビット整数 |
tf.int16 | 16ビット整数 |
tf.int32 | 32ビット整数 |
tf.int64 | 64ビット整数 |
tf.uint8 | 符号なし8ビット整数 |
tf.string | 文字列 |
tf.bool | 真偽値 |
上記は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といった型に変換している例です。上記は一例であり、同じように色々な型変換ができますので、色々な変換を試してみていただけるとよいかと思います。
tf.castの公式ドキュメントはこちらを参照してください。
まとめ
Googleによって開発されている機械学習ライブラリであるTensorFlowで、Tensorの型を変換する方法を紹介しました。Tensorの型変換では、tf.castで変換先の型を指定することで実行できます。
TensorFlowのメソッドを使用していると処理できない型等でエラーとなることがあります。そのような際には、型変換をして実行を試してみましょう。
また、ディープラーニングでは大規模なデータセットやモデルになってきた場合に、メモリ消費量が少ない型に変換してメモリを節約したいといった場合もあります。このような際にも適切に型変換をできる必要があるでしょう。
状況に応じて適切に型変換できるようにtf.castの使い方は覚えておいてもらうとよいかと思います。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。