2016-12-04 3 views
2

Скажем, мои данные имеют 25 функций. В Keras я мог бы легко реализовать слой Embedding для каждой функции ввода и объединить их вместе для подачи на более поздние слои.реализовать слой внедрения с использованием тензорного потока

Я вижу, что tf.nn.embedding_lookup принимает параметр id, который может быть просто простым целым числом или целым числом ([1,2,3, ..]). Тем не менее, вход функции часто формы

x = tf.placeholder(tf.float32, [None, in_feature_num]) 

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

X = tf.split(1,in_feature_num,x) 

и каждую функцию ввод имеет форму [?, 1]. Но embedding_lookup не имеет формы [?, 1], и поскольку мы не имеем заданную длину строки, я не могу reshape или unpack ее форме, например [?].

Итак, как же я мог преобразовать входной сигнал, как

[[1], 
[2], 
[3], 
    ... 
] 

в представление вложения, как это:

[ 
    [....], #a vector 
    [....], #a vector 
    [....], #a vector 
    ... 
] 

Относящиеся SO вывешивают: What does tf.nn.embedding_lookup function do? и TensorFlow Embedding Lookup но эти посты не решить мою проблема.

+0

Я не уверен на 100%, что вы подразумеваете под «ваши данные имеет функции». Я понимаю, что вложения - это представители ваших входных данных. Таким образом, это функции. Вы можете добавить слой внедрения перед своим NN и узнать вес, чтобы на самом деле изучить слой внедрения или добавить обобщенный предварительно подготовленный. Не могли бы вы уточнить свои данные? – roopalgarg

+0

Вы говорите, что у вас есть партия из 25 функций, и вы хотите, чтобы каждая функция имела собственное вложение? – mazecreator

ответ

-1

Я думаю, что знаю, что вы имеете в виду. Вопрос в том, каковы функции? Если они численные, то вам действительно не нужен слой внедрения - вместо этого вы можете использовать полностью подключенный слой. Если они категоричны, я думаю, что у вас есть два варианта: 1. отдельное вложение для всех функций (так что у вас будет 25 уровней внедрения, которые необходимо будет объединить). 2. объединить функции в один сначала

+0

да, «в итоге с 25 слоями внедрения», это то, что я пытался реализовать. Я знаю, как это сделать в керасе, однако я не знаю, как это сделать в тензорном потоке ... –

+0

Это не ответ ... понятно, что он хочет вариант 1, но вы не знаете, скажите ему, как это сделать –