我如何获得此输出以便在 python 中使用 keras 和 numpy 创建 word2vec 模型?

问题描述

你好,我很难理解这一点,这是交易,我试图获得与给我项目的人相同的输出,但似乎我在做错了什么过程,这是给定的输出 The output i want to have 和我的输出The output i have

这是我的代码的样子:

#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"])

预先感谢您尝试找出我的工作中出了什么问题!

解决方法

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

尝试为该层交换输入。

''' dot_product = layers.dot([上下文,目标],轴=1) ''' 这应该有效。

,

这是输出(我想抑制两个重塑层线)Output

,

试试这个:

dot_product = Dot(axes=1)([target,context])

你还应该导入:

from keras.layers.merge import Dot