Я пытаюсь объединить различные вложения dim в тензорном потоке:
Итак, я хочу объединить три вложения:
- First_embedding = 300 dim
- Second_embedding = 50dim
- Third_embedding = 6 dim
Теперь я хочу, чтобы конечный вектор был 356 dim shape:
concat( [ 300 dim , 50 dim , 6 dim ] ) ---> 356 dim
Я могу легко сделать это с помощью np.column_stack:
first_embedding = np.random.randint(10,20,[10,300])
second_embedding = np.random.randint(10,20,[10,50])
third_embedding = np.random.randint(10,20,[10,6])
concat = np.column_stack((first_embedding,second_embedding,third_embedding))
print(concat.shape)
вывод:
(10, 356)
Я не могу сделать то же самое в тензорном потоке, поэтому, если я создаю три встраивания в тензорном потоке:
import tensorflow as tf
tf.reset_default_graph()
sentences = tf.placeholder(tf.int32,
shape=[None,None]
)
sentences_sec = tf.placeholder(tf.int32,
shape=[None,None]
)
sentences_third = tf.placeholder(tf.int32,
shape=[None,None]
)
Word_embedding = tf.get_variable(name="Word_embedding",
shape=[24,300],
initializer=tf.constant_initializer(np.array(load_embedding_matrix_1)),
trainable=False
)
first_embedding_loopup= tf.nn.embedding_lookup(Word_embedding,sentences)
Word_embedding_second = tf.get_variable(name="Word_embedding_2",
shape=[24,50],
initializer=tf.constant_initializer(np.array(load_embedding_matrix_2)),
trainable=False
)
second_embedding_loopup= tf.nn.embedding_lookup(Word_embedding_second,sentences_sec)
word_sentences_third = tf.get_variable(name="Word_embedding_3",
shape=[24,6],
initializer=tf.constant_initializer(np.array(load_embedding_matrix_3)),
trainable=False
)
third_embedding_loopup = tf.nn.embedding_lookup(Word_embedding_third,sentences_third)
Я пытаюсь использовать tf.concat, но для этого все dim должны быть одинаковыми,
Я был бы очень признателен, если бы кто-нибудь любезно дал мне несколько советов о том, как я могу использовать diff dim и получить ту же форму, что и я.получать от np.column_stack?
Спасибо!