Neural network 我应该使用float还是类作为神经网络最后一层的输出?

Neural network 我应该使用float还是类作为神经网络最后一层的输出?,neural-network,deep-learning,Neural Network,Deep Learning,我正在研究一个深入的学习问题,我试图从观测到的地震时间序列中预测实验室地震数据的失效时间。目标是下一次地震前的一个整数,范围从1到10 我可以将最后一层设计为返回单个浮点,并使用(比如)均方误差mse作为损失,使返回的浮点接近所需的整数。或者,我可以将每个整数可能性看作一个类,并使用交叉熵损失进行优化 是否有任何论据支持这两种选择中的任何一种 另外,如果目标是一个介于1到10之间的浮点数,该怎么办?我还可以把这变成一个class/CE问题 到目前为止,我已经尝试了CE选项,它在某种程度上起作用,

我正在研究一个深入的学习问题,我试图从观测到的地震时间序列中预测实验室地震数据的失效时间。目标是下一次地震前的一个整数,范围从1到10

我可以将最后一层设计为返回单个浮点,并使用(比如)均方误差mse作为损失,使返回的浮点接近所需的整数。或者,我可以将每个整数可能性看作一个类,并使用交叉熵损失进行优化

是否有任何论据支持这两种选择中的任何一种

另外,如果目标是一个介于1到10之间的浮点数,该怎么办?我还可以把这变成一个class/CE问题

到目前为止,我已经尝试了CE选项,它在某种程度上起作用,我正在考虑尝试mse选项,但我想退后一步,在继续之前进行思考。这些想法将包括一种方法可能优于另一种方法的原因

我正在使用pytorch版本1.0.1和Python 3.7


感谢您的指导。

我决定在Pytorch中实现一个带有L1Loss的浮头,并创建了一个简单但有效的合成数据集来测试实现。数据集创建了一些随机抽取的小正方形的图像。训练标签是简单的平方数除以10,一个带有一个十进制数字的浮点数。 网络训练速度很快,精度很高——测试样本精确到小数点后一位

至于最初的问题,我所做的跑步肯定更倾向于浮动而不是普通班

我对这一点的看法是,类中的实现在类的赋值方面有一个基本的不精确性,也许更重要的是,类实现没有度量的概念。也就是说,float实现即使错过了精确匹配,也会尝试生成接近输入标签的输出标签,而类实现没有close的概念


Pytorch发出了一个警告。如果要拟合一个浮点,请确保将其封装在数据生成器中的长度为1的向量中。Pytorch无法处理裸浮点数,即使它在批处理完成时确实成为向量。但它没有抱怨。这花费了我很多时间。

难道不可以考虑:这是一个实际的、可回答的问题,可能是特定应用软件开发所特有的。当前没有用例的通用解释建议在其他地方进行更通用的讨论。如果我添加一个问题,即我正在使用pytorch包,这会使这个问题可行吗?如果我更详细地解释我试图解决的问题,会有帮助吗?我已经完成了上述两项——这样更好吗?希望我能学会提出可接受问题的规则。