将Tensorflow / Keras嵌入层应用于张量

我想创建一个张量流模型,该模型将整数列表作为输入并返回相应的预训练嵌入。

例如,如果输入批次为[[1,2,3],[4,5,6]],我希望模型返回 [[embed[1],embed[2],embed[3]],[embed[4],embed[5],embed[6]],其中embed是包含预训练嵌入的矩阵。

我认为我能够使用预训练的嵌入创建一个嵌入层,但是我的代码仅返回一个嵌入。

embedding_dim = 5
vocab_size = 100

embedding_matrix = np.random.random((vocab_size,embedding_dim))

emb_model = tf.keras.Sequential()
embedder = tf.keras.layers.Embedding(vocab_size,embedding_dim,embeddings_initializer=tf.keras.initializers.Constant(embedding_matrix),trainable=False,input_shape=(None,))
emb_model.add(embedder)

例如,如果我执行emb_model([[[8,7],[2,8,4]]]),则仅返回第8项的嵌入

iCMS 回答:将Tensorflow / Keras嵌入层应用于张量

这是正确的方法

embedding_dim = 5
vocab_size = 100
test = np.asarray([[1,2,3],[4,5,6]])

embedding_matrix = np.random.uniform(-1,1,(vocab_size,embedding_dim))

emb_model = tf.keras.Sequential()
embedder = tf.keras.layers.Embedding(vocab_size,embedding_dim,trainable=False,weights=[embedding_matrix],input_shape=(None,))
emb_model.add(embedder)

emb_model(test)

我们初始化权重矩阵并将其插入模型weights=[embedding_matrix]设置trainable=False

在这一点上,我们可以直接通过我们感兴趣的ID来计算预测

结果是一个暗淡的数组(n_batch,n_token,embedding_dim)

本文链接:https://www.f2er.com/2195793.html

大家都在问