我正在和Keras一起玩,并尝试从上下文中预测单词,例如从句子" 我不得不说食物很美味!"我希望得到这样的东西:
[say the ? was tasty] -> food, meals, spaghetti, drinks
然而,我目前的问题是我正在训练的网络似乎只学习单个单词的概率,而不是他们在特定情境中的概率。
由于单词的频率不均衡,我认为我可能/可能/应该对我的损失函数应用权重 - 这是目前的二元交叉熵函数。
我只是将每个单词的反转概率乘以误差:
def weighted_binary_crossentropy(y_true, y_pred):
return K.mean(K.binary_crossentropy(y_pred, y_true) * (1-word_weights), axis=1)
该函数被模型用作损失函数:
model.compile(optimizer='adam', loss=weighted_binary_crossentropy)
但是,我的结果完全相同,我不确定我的模型是否已损坏,或者我是否使用loss
参数/函数错误。
是我的weighted_binary_crossentropy()
函数做我刚才描述的吗?我问,因为出于某种原因,这种方法类似:
word_weights),axis = 1)
答案 0 :(得分:1)
实际上,正如人们可能会在fit
sample_weights
函数中读到的那样,可能会提供foreach($myarray as $key => $value)
{
echo $value. "<br>";
}
,这似乎正是您想要使用的内容。