付録F特殊なデータ型

この付録では、TensorFlowが通常の浮動小数点数や整数のテンソル以外にサポートしているデータ構造(文字列、不調和テンソル、疎テンソル、テンソル配列、集合、キュー)を簡単に紹介する。

F.1 文字列

テンソルはバイト列を保持できる。この種のテンソルは、自然言語処理(16章参照)で特に役に立つ。

>>> tf.constant(b"hello world")
<tf.Tensor: id=149, shape=(), dtype=string, numpy=b'hello world'>

Unicode文字列で文字列テンソルを作ろうとした場合、TensorFlowが自動的にUTF-8にエンコードする。

>>> tf.constant("cafe")
<tf.Tensor: id=138, shape=(), dtype=string, numpy=b'caf\xc3\xa9'>

Unicode文字列を表現するテンソルを作ることもできる。1個のUnicodeコードポイント†1を表す32ビット整数の配列を作ればよい。

[†1] Unicodeコードポイントがどういうものかよくわからない場合には、https://docs.python.org/ja/3/howto/unicode.htmlを参照のこと。

>>> tf.constant([ord(c) for c in "cafe"])
<tf.Tensor: id=211, shape=(4,), dtype=int32,
            numpy=array([ 99,  97, 102, 233], dtype=int32)>

tf.string型のテンソルでは、文字列の長さはテンソルの形情報の一部になっていない。つまり、文字列はアトミックな値だと見なされている。しかし、Unicode文字列テンソル(つまりint32テンソル)では、文字列の長さはテンソルの形情報の一部になっている。 ...

Get scikit-learn、Keras、TensorFlowによる実践機械学習 第2版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.