Keras损失函数-多场

时间:2018-08-08 12:44:26

标签: tensorflow neural-network keras cross-entropy

我有一些数据可以用来挑选一支球队。团队中的每个玩家都可以从100个角色中选择一个。我为每个玩家创建了一个np.zeros(100),将我的整个选择权设置为1000 x 0s。然后我训练从第一个选择(全0)到最后一个选择的10个数据的子集,尽管整个数组为1000。输出数据是整个团队重复10次以匹配最终答案的结果。

在损失功能中,我想分别检查每个玩家的答案。

def player_loss(self, y_true, y_pred):   
t0,t1,t2,t3,t4,t5,t6,t7,t8,t9 = tf.split(y_true, num_or_size_splits=10, axis=1)
p0,p1,p2,p3,p4,p5,p6,p7,p8,p9 = tf.split(y_pred, num_or_size_splits=10, axis=1) 

这将第一名玩家平均分配给第十名玩家。现在,最后,我想获取每个玩家的categorical_crossentropy并确定损失。

top_k_ca = lambda yt,yp: categorical_crossentropy(yt,yp)
losses = [top_k_ca(t0,p0),
          top_k_ca(t1,p1),
          top_k_ca(t2,p2),
          top_k_ca(t3,p3),
          top_k_ca(t4,p4),
          top_k_ca(t5,p5),
          top_k_ca(t6,p6),
          top_k_ca(t7,p7),
          top_k_ca(t8,p8),
          top_k_ca(t9,p9)]
return K.mean(tf.concat(losses, axis=0))

我不是专家,但是这种逻辑有效吗?我无法一次查看整个y_true数组,因为任何玩家都可以随时选择。那将是对整个决赛阵容的整体审视,自然不是我在寻找什么。

运行此命令时,很快我就损失函数得到了NaN。

谢谢

0 个答案:

没有答案