tf.contrib.layers.embedding_column del flujo tensorial

Estoy pasando por tensorflow tutorial tensorflow . Me gustaría encontrar una descripción de la siguiente línea:

tf.contrib.layers.embedding_column 

Me pregunto si usa word2vec o cualquier otra cosa, o tal vez estoy pensando en una dirección completamente equivocada. Intenté hacer clic en GibHub, pero no encontré nada. Supongo que mirar en GitHub no va a ser fácil, ya que Python podría referirse a algunas bibliotecas de C ++. ¿Alguien podría apuntarme en la dirección correcta?

Me he estado preguntando acerca de esto también. No me queda muy claro lo que están haciendo, pero esto es lo que encontré.

En el documento sobre el aprendizaje amplio y profundo , describen los vectores de incrustación como inicializados aleatoriamente y luego ajustados durante el entrenamiento para minimizar el error.

Normalmente, cuando realiza incrustaciones, toma una representación vectorial arbitraria de los datos (como los vectores de un solo calor) y luego la multiplica por una matriz que representa la incrustación. Esta matriz se puede encontrar por PCA o mientras se entrena con algo como t-SNE o word2vec.

El código real para el embedding_column está aquí , y se implementa como una clase llamada _EmbeddingColumn que es una subclase de _FeatureColumn. Almacena la matriz de incrustación dentro de su atributo sparse_id_column. Luego, el método to_dnn_input_layer aplica esta matriz de incrustación para producir las incrustaciones para la siguiente capa.

  def to_dnn_input_layer(self, input_tensor, weight_collections=None, trainable=True): output, embedding_weights = _create_embedding_lookup( input_tensor=self.sparse_id_column.id_tensor(input_tensor), weight_tensor=self.sparse_id_column.weight_tensor(input_tensor), vocab_size=self.length, dimension=self.dimension, weight_collections=_add_variable_collection(weight_collections), initializer=self.initializer, combiner=self.combiner, trainable=trainable) 

Por lo que puedo ver, parece que las incrustaciones se forman aplicando cualquier regla de aprendizaje que esté utilizando (pendiente de gradiente, etc.) a la matriz de incrustación.

Tuve una duda similar sobre las incrustaciones.

Aquí está el punto principal:

La capacidad de agregar una capa de incrustación junto con los modelos lineales amplios de la tradición permite realizar predicciones precisas al reducir la dimensionalidad dispersa hasta una baja dimensionalidad.

introduzca la descripción de la imagen aquí

Aquí hay una buena publicación al respecto!

Y aquí hay un ejemplo simple que combina capas incrustadas. Usar los datos del Titanic Kaggle para predecir si el pasajero sobrevivirá o no según ciertos atributos como Nombre, Sexo, el boleto que tenían, la tarifa que pagaron por la cabina en la que se hospedaron, etc.