¿Qué es una codificación activa en tensorflow?

Respuestas:

14

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).

Djib2011
fuente
3

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.]]
  1. Especificar on_value y off_value
í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

Vallie
fuente
El documento tf es más comprensible: tensorflow.org/api_docs/python/tf/one_hot
dturvene