使用张量流实现嵌入层

问题描述:

假设我的数据有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]的形状,并且由于我们没有指定的行长度,所以我不能将它的形状设置为[?],例如reshapeunpack

所以,我怎么能变换像

[[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.为每个特征分别嵌入(所以你最终将得到25个嵌入层,这将需要连接) 2.将这些特征合并成一个特征第一个

+0

是的,“最终有25个嵌入层”这就是我正在实施的。我知道如何在keras中做到这一点,但是,我不知道如何在tensorflow中做到这一点...... –

+0

这不是一个答案......从问题中可以清楚地看到他想要选项1,告诉他如何做到这一点 –