首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tensorflow:如何在tensorflow中连接不同的模糊嵌入?

Tensorflow:如何在tensorflow中连接不同的模糊嵌入?
EN

Stack Overflow用户
提问于 2018-12-28 20:34:17
回答 1查看 1K关注 0票数 1

我试图在tensorflow中连接不同的模糊嵌入:

因此,我想连接三个嵌入:

  • First_embedding = 300 dim
  • Second_embedding = 50 dim
  • Third_embedding =6 dim

现在我要最终矢量为356模糊形状:

代码语言:javascript
运行
复制
concat( [ 300 dim , 50 dim , 6 dim ] ) ---> 356 dim 

在numpy中,我可以很容易地用np.column_stack实现这一点:

代码语言:javascript
运行
复制
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)

产出:

代码语言:javascript
运行
复制
(10, 356)

我不能在tensorflow中做同样的事情,所以如果我在tensorflow中创建三个嵌入:

代码语言:javascript
运行
复制
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,但是所有的模糊应该是一样的,

如果有人能给我一些建议的话,我会非常感激的,我怎样才能从np.column_stack那里得到和我一样的形状呢?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-28 20:40:26

您需要指定来正确连接单词向量。下面是一个示例:

代码语言:javascript
运行
复制
import tensorflow as tf

tf.enable_eager_execution()

a = tf.get_variable(name='a', initializer=tf.zeros_initializer(), shape=(512, 24, 300))
b = tf.get_variable(name='b', initializer=tf.zeros_initializer(), shape=(512, 24, 50))
c = tf.get_variable(name='c', initializer=tf.zeros_initializer(), shape=(512, 24, 6))

print(tf.concat(values=[a, b, c], axis=-1).numpy().shape)
>>> (512, 24, 356)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53964008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档