Tensorflow - поиск разреженных вложений, который остается разреженным - PullRequest
0 голосов
/ 07 ноября 2018

Я реализую текстовый классификатор с CNN, аналогичный Kim 2014 с Tensorflow. Tensorflow предоставляет tf.nn.embedding_lookup_sparse, что позволяет указывать идентификаторы слов в виде разреженного тензора. Это хорошо, особенно для включения последовательностей переменной длины. Однако эта функция требует «комбинированного» шага после поиска, такого как «среднее» или «сумма». Это приводит его обратно в плотное тензорное пространство. Я не хочу делать какие-либо комбинации. Я хочу сохранить свои векторы в разреженном представлении, чтобы потом я мог делать другие свертки. Возможно ли это в TF?

РЕДАКТИРОВАТЬ: я хочу, чтобы избежать заполнения ввода до поиска встраивания. Это связано с тем, что поиск вложения Tensorflow генерирует векторы для значения пэда, а его кладж пытается замаскировать его нулями (см. Здесь) .

1 Ответ

0 голосов
/ 07 ноября 2018

Я думаю, что в этом вопросе есть две путаницы. Во-первых, операция объединения происходит по набору идентификаторов внедрения для каждой строки ввода разреженных индексов sp_ids. Так что если sp_ids имеет форму N x 1, то вы «комбинируете» только один вектор внедрения на каждую строку sp_ids, который просто извлекает этот вектор внедрения (что, я думаю, вы хотите сказать) .

Во-вторых, возвращаемое значение является вектором внедрения для каждой строки ввода. Сам вектор вложения является плотным вектором, по определению, что такое вложение и что вычисляют операции вложения TensorFlow. Так что этот возвращаемый результат всегда будет плотным, и это то, что вы хотите. Разреженное представление матрицы было бы ужасно неэффективным, поскольку матрица действительно будет плотной (полной плотных вложений), независимо от того, происходит операция «объединитель» или нет.

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

Может быть, я не прав, можете ли вы предоставить более подробную информацию о том, почему вы ожидаете, что сами векторы вложения будут разреженными? Это было бы очень необычной ситуацией, если так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...