在使用Keras API的tensorflow 2中,我的损失张量需要是什么形状?

在使用Keras API的tensorflow 2中,我的损失张量需要是什么形状?,tensorflow,keras,tensorflow2.0,loss-function,Tensorflow,Keras,Tensorflow2.0,Loss Function,我已经玩了一段时间的自定义损失函数并取得了一些成功,但我正在努力使用一个新的损失函数,我想知道这是否是由于损失结果张量的形状 Myy\u true和y\u pred张量具有shape==(100216563)。由于数据的性质和我在损失函数中执行的计算,输出shape==(100563)的损失张量是非常有意义的,因为通过reduce\u prod()操作可以减少第二维度 但是,如果我单独使用这个损失函数,损失值将稳步增加而不是减少。。。我以前没见过这个。如果到处都是,我会认为损失函数是个坏主意,或

我已经玩了一段时间的自定义损失函数并取得了一些成功,但我正在努力使用一个新的损失函数,我想知道这是否是由于损失结果张量的形状

My
y\u true
y\u pred
张量具有
shape==(100216563)
。由于数据的性质和我在损失函数中执行的计算,输出
shape==(100563)
的损失张量是非常有意义的,因为通过
reduce\u prod()
操作可以减少第二维度

但是,如果我单独使用这个损失函数,损失值将稳步增加而不是减少。。。我以前没见过这个。如果到处都是,我会认为损失函数是个坏主意,或者我的数学在某个地方错了,但据我所知,数学是正确的

这个缺少中间维度的奇怪形状会影响梯度计算吗?我已经尝试在我的
reduce\u foo()
方法中使用
keepdims=True
,但是这对增加的损失值没有影响(结果仍然有不同的形状,
shape==(100,1563)


通过查看tensorflow文档,我可以找到形状与y_pred和y_true匹配的损失的示例,以及另一个具有单个标量值的损失的示例。是否有任何特定的规则说明输出损失应该是什么形状,或者是否有人能给我一些见解,帮助我理解为什么损失应该是特定的形状(如果这甚至是我的问题)?

您是否尝试过将损失减少为标量?从:加权损失浮点张量。如果减少为无,则为形状[batch_size,d0,…dN-1];否则为标量。(注意dN-1,因为所有损失函数减少1维,通常轴=-1。)谢谢,我错过了这篇文档的一些内容。那篇参考文献表明,除非我介入,否则它都会被简化为一个标量,所以损失方法的维度可能不会像我想象的那样影响它。我还没有尝试过这个损失的定标器值,但我会的。我同时尝试的是缩小最终轴,而我损失会有一小段时间的减少,然后是一段长时间的缓慢但稳定的损失再次上升……我现在想知道,这种损失是否比我的其他损失计算对高学习率更敏感?