【发布时间】:2017-04-18 18:51:06
【问题描述】:
假设我的数据有 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 但这些帖子并没有解决我的问题。
【问题讨论】:
-
我不是 100% 确定您所说的“您的数据具有特征”是什么意思。我的理解是嵌入是您输入数据的代表。所以它们是特征。您可以选择在 NN 前面添加嵌入层并学习权重以实际学习嵌入层,也可以添加通用的预训练层。您能否更具体地了解您的数据?
-
您是说您有一批 25 个特征,并且您希望每个特征都有自己的嵌入?
标签: tensorflow embedding