Недавно я рассмотрел интересную реализацию классификации сверточного текста . Однако весь код TensorFlow, который я рассмотрел, использует случайные (не предварительно обученные) векторы внедрения, например следующие:
with tf.device('/cpu:0'), tf.name_scope("embedding"):
W = tf.Variable(
tf.random_uniform([vocab_size, embedding_size], -1.0, 1.0),
name="W")
self.embedded_chars = tf.nn.embedding_lookup(W, self.input_x)
self.embedded_chars_expanded = tf.expand_dims(self.embedded_chars, -1)
Кто-нибудь знает, как использовать результаты Word2vec или предварительно обученного встраивания слов в GloVe вместо случайного?
источник
tf.decode_csv()
для преобразования текстового файла в тензор, но это может быть дорогостоящим (в частности, вам потребуется создать по одному дляTensor
каждого столбца, а затем объединить числовые значения вместе). Возможно, более простой альтернативой было бы использоватьpandas.read_csv()
иpandas.DataFrame.as_matrix()
получать входные данные в виде массива NumPy.sess.run(embedding_init, ...)
return (при условии, что вы не храните ссылку на него в своей программе). В зависимости от структуры вашей программы вы можете захотетьdel embedding
(гдеembedding
находится массив NumPy) освободить массив раньше.Я использую этот метод для загрузки и публикации встраивания.
источник
Ответ @mrry неверен, потому что он вызывает перезапись весов вложений при каждом запуске сети, поэтому, если вы следуете мини-пакетному подходу для обучения своей сети, вы перезаписываете веса вложений. Итак, с моей точки зрения, правильный способ предварительно обученных встраиваний:
источник
2.0 совместимый ответ . Существует множество предварительно обученных встраиваний, разработанных Google и имеющих открытый исходный код.
Некоторые из них есть
Universal Sentence Encoder (USE), ELMO, BERT
и т. Д., И их очень легко повторно использовать в вашем коде.Код для повторного использования
Pre-Trained Embedding
,Universal Sentence Encoder
как показано ниже:Для получения дополнительной информации о предварительно обученных вложениях, разработанных и открытых Google, перейдите по ссылке TF Hub .
источник
С tenorflow версии 2 это довольно просто, если вы используете слой Embedding.
источник
Я также столкнулся с проблемой встраивания, поэтому я написал подробное руководство с набором данных. Здесь я хотел бы добавить то, что пробовал. Вы также можете попробовать этот метод,
Вот рабочий подробный пример учебника Ipython, если вы хотите разобраться с нуля, посмотрите.
источник