tf.contrib.layers.embedding_column из тензорного потока

Я прохожу учебник тензор потокаtensorflow, Я хотел бы найти описание следующей строки:

tf.contrib.layers.embedding_column

Интересно, использует ли он word2vec или что-то еще, или, возможно, я думаю в совершенно неправильном направлении. Я пытался кликнуть на GibHub, но ничего не нашел. Я предполагаю, что поиск на GitHub не будет легким, поскольку python может ссылаться на некоторые библиотеки C ++. Кто-нибудь может указать мне правильное направление?

Ответы на вопрос(2)

Вот главный момент:

Возможность добавления встраиваемого слоя наряду с традиционными линейными моделями позволяет делать точные прогнозы, уменьшая разреженную размерность вплоть до низкой размерности.

Вотхороший пост об этом!

И вотпростой пример объединение встраиваемых слоев. Использование данных Titanic Kaggle для прогнозирования выживания пассажира на основе определенных атрибутов, таких как имя, пол, билет, который у них был, тариф, который он заплатил за номер, в котором он остановился и т. Д.

что они делают, но это то, что я нашел.

встатья о широком и глубоком обученииони описывают векторы внедрения как случайные инициализированные, а затем корректируемые во время обучения, чтобы минимизировать ошибку.

Обычно, когда вы выполняете вложения, вы берете какое-то произвольное векторное представление данных (например, векторы с «горячей»), а затем умножаете его на матрицу, которая представляет вложение. Эта матрица может быть найдена PCA или во время обучения чем-то вроде t-SNE или word2vec.

Фактический код для embedding_columnВоти он реализован как класс с именем _EmbeddingColumn, который является подклассом _FeatureColumn. Он хранит матрицу встраивания в своем атрибуте sparse_id_column. Затем метод to_dnn_input_layer применяет эту матрицу внедрения для создания вложений для следующего уровня.

 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)

Итак, насколько я могу видеть, кажется, что вложения формируются путем применения любого используемого вами правила обучения (градиентный спуск и т. Д.) К матрице встраивания.

Ваш ответ на вопрос