Apéndice C. Estructuras de datos especiales
En este apéndice echaremos un vistazo muy rápido a las estructuras de datos soportadas por TensorFlow, más allá de los tensores regulares de flotadores o enteros. Esto incluye cadenas, tensores irregulares, tensores dispersos, matrices tensoriales, conjuntos y colas.
Cuerdas
Los tensores pueden contener cadenas de bytes, , lo que resulta útil sobre todo para el procesamiento del lenguaje natural (véase el Capítulo 16):
>>>
tf
.
constant
(
b
"hello world"
)
<tf.Tensor: shape=(), dtype=string, numpy=b'hello world'>
Si intentas construir un tensor con una cadena Unicode, TensorFlow la codifica automáticamente a UTF-8:
>>>
tf
.
constant
(
"café"
)
<tf.Tensor: shape=(), dtype=string, numpy=b'caf\xc3\xa9'>
También es posible crear tensores que representen cadenas Unicode. Sólo tienes que crear una matriz de enteros de 32 bits, cada uno de los cuales representará un único punto de código Unicode.1
>>>
u
=
tf
.
constant
([
ord
(
c
)
for
c
in
"café"
])
>>>
u
<tf.Tensor: shape=(4,), [...], numpy=array([ 99, 97, 102, 233], dtype=int32)>
Nota
En los tensores del tipo tf.string
, la longitud de la cadena no forma parte de la forma del tensor. En otras palabras, las cadenas se consideran valores atómicos. Sin embargo, en un tensor de cadenas Unicode (es decir, un tensor int32), la longitud de la cadena forma parte de la forma del tensor.
El paquete tf.strings
contiene varias funciones para manipular tensores de cadena, como length()
para contar el número de bytes de ...
Get Aprendizaje automático práctico con Scikit-Learn, Keras y TensorFlow, 3ª edición 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.