首页 > 解决方案 > 为了在 python 中使用 keras 和 numpy 创建 word2vec 模型,我怎样才能得到这个输出?

问题描述

您好,我很难理解这一点,这是交易,我试图获得与给我项目的人相同的输出,但似乎我在这个过程中做错了什么,这里是给定的输出我想要 的输出和我有的输出:我有的输出

这是我的代码的样子:

#the keras model/graph would look something like this:
from keras import layers, optimizers, Model

 # embedding , 
embedding = layers.Embedding(Vt, vector_dim, input_length=1, name='embedding')
# entrée deux entier (couple de morceaux)
input_target = Input((1,), dtype='int32')
input_context = Input((1,), dtype='int32')

print(input_target)
print(input_context)

target = embedding(input_target)
context = embedding(input_context)

#target = layers.Reshape((vector_dim,))(target)
#context = layers.Reshape((vector_dim,))(context)

print("----------")
print(target)
print(context)

dot_product = layers.dot([target, context], axes=1)
dot_product = Flatten()(dot_product)
print(dot_product)
#dot_product = layers.Reshape((1,))(dot_product)
#dot_product = layers.Reshape((vector_dim,))(dot_product)

output = Dense(1, activation='sigmoid',name="classif")(dot_product)

# # definition du modèle
Track2Vec = Model(inputs=[input_target, input_context], outputs=output)
Track2Vec.compile(loss='binary_crossentropy', optimizer='adam',metrics=["accuracy"])

提前感谢您试图找出我工作中的问题!

标签: pythonpython-3.xmachine-learningkerasword2vec

解决方案


问题出在 layer.dot 中,您需要在其中执行点积以给出 (1,1) 而不是 (30,30)。

尝试为该层交换您的输入。

''' dot_product = layers.dot([context, target], axes=1) ''' 这应该可以。


推荐阅读