我想创建一个自定义损失函数,我想在其中使用预先计算的y_true,但是不幸的是,当我使用该函数时,批处理大小与y_pred不匹配时出现了错误。我有兴趣了解周围的工作。这是我的自定义损失的示例代码。
def avg_vect_loss(y_true, y_pred):
#y_true need not to be used, instead pos_avg_vects and neg_avg_vects are considered as my pre calculated y_trues
pos_avg_vects, neg_avg_vects = pos_neg_avg_vects()
l2_dist_to_pos_avg = l2_distance_loss(y_pred, pos_avg_vects)
l2_dist_to_neg_avg = l2_distance_loss(y_pred, neg_avg_vects)
return l2_dist_to_pos_avg/l2_dist_to_neg_avg
代码已注释。我的损失函数试图使y_pred与neg_avg_vec之间的l2距离最大化,并使y_pred与pos_avg_vec之间的l2_distance最小化。由于y_pred和pos_avg_vects,neg_avg_vects之间的批量大小不匹配,我出现了错误。
pos_avg_vector和neg_avg_vector是y_true的最近邻居和最远邻居的平均向量。
请注意,y_true,y_pred是单词向量。我的训练集和测试集由对应单词的单词向量组成。