Actualmente estoy haciendo un curso en Tensorflow en el que utilizaron tf.one_hot (índices, profundidad). Ahora no entiendo cómo estos índices cambian en esa secuencia binaria.
¿Alguien puede explicarme el proceso exacto?
Actualmente estoy haciendo un curso en Tensorflow en el que utilizaron tf.one_hot (índices, profundidad). Ahora no entiendo cómo estos índices cambian en esa secuencia binaria.
¿Alguien puede explicarme el proceso exacto?
Suponga que tiene una característica categórica en su conjunto de datos (por ejemplo, color). Y sus muestras pueden ser rojas, amarillas o azules. Para pasar este argumento a un algoritmo ML, primero debe codificarlo para que en lugar de cadenas tenga números.
La forma más fácil de hacer tal cosa es crear un mapeo donde:
rojo -> 1
amarillo -> 2
azul -> 3
y reemplace cada cadena con su valor asignado.
Sin embargo, esto podría crear efectos secundarios no deseados en nuestro modelo de ML, ya que cuando se trata de números podría pensar que azul> amarillo (porque 3> 2) o que rojo + amarillo = azul (porque 1 + 2 = 3). El modelo no tiene forma de saber que estos datos fueron categóricos y luego se mapearon como enteros.
La solución a este problema es la codificación única en la que creamos N nuevas funciones , donde N es el número de valores únicos en la función original. En nuestro examen, N sería igual a 3, porque tenemos 3 colores únicos (rojo, amarillo y azul).
Cada una de estas características será binaria y correspondería a uno de estos valores únicos. En nuestro ejemplo, la primera característica sería una característica binaria que nos indicaría si esa muestra es roja o no, la segunda sería la misma para el amarillo y la tercera para el azul.
Un ejemplo de tal transformación se ilustra a continuación:
Tenga en cuenta que debido a que este enfoque aumenta la dimensionalidad del conjunto de datos, si tenemos una característica que toma muchos valores únicos, es posible que queramos usar una codificación más dispersa (como la que presenté anteriormente).
profundidad: un escalar que define la profundidad de una dimensión caliente.
índices: un tensor de índices.
Este es el ejemplo dado en la documentación de tensorflow.
1. Solo especificando índices y profundidad (los valores predeterminados de on_value es 1 y off_value es 0)
indices = [0, 1, 2]
depth = 3
tf.one_hot(indices, depth) # output: [3 x 3]
# [[1., 0., 0.],
# [0., 1., 0.],
# [0., 0., 1.]]
índices = [0, 2, -1, 1] profundidad = 3 tf.one_hot (índices, profundidad, on_value = 5.0, off_value = 0.0, axis = -1) ## salida: [4 x 3] # [[5.0, 0.0, 0.0], # one_hot (0) # [0.0, 0.0, 5.0], # one_hot (2) # [0.0, 0.0, 0.0], # one_hot (-1) # [0.0, 5.0, 0.0]] # one_hot (1)
También puedes ver el código en GitHub