您好,我正在我的大学使用tensorflow,试图仅使用模拟产生的图像来对模拟程序的转向角度进行分类。
转向角度是从-1到1的值,我将它们分成50个“桶”。所以我的预测向量的第一个值意味着预测的转向角度在-1到-0.96之间。下面显示了我正在使用的分类和优化函数。
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction, y))
optimizer = tf.train.AdamOptimizer(0.001).minimize(cost)Y是一个向量,它有49个0和一个1代表正确的存储桶。我现在的问题是。例如,如果正确的存储桶位于索引25,那么我如何考虑26的预测比48的预测要好得多。
我没有发布实际的网络,因为它只是几个conv2d和maxpool层,最后是一个完全连接的层。
发布于 2016-12-07 00:26:33
因为您应用的是交叉熵或负对数似然。在给定预测输出和基本事实的情况下,您正在惩罚系统。
也就是说,你的系统在50个班级的输出中预测了不同的数字,最高的是班级号25,但你的实际情况是班级26。因此,您的系统将采用26的预测值,并调整参数,以便在下次看到此输入时在此输出上生成最高数值。
发布于 2016-12-07 01:35:04
你可以做两件基本的事情:
将y和预测更改为-1..1范围内的标量;使损失函数为(y-预测)**2或其他值。一种非常不同的模型,但可能比one-hot更合理。
保持一个热门的目标和损失,但有y=目标*w,其中w是一个常数矩阵,大部分是0,1在对角线上,在下一个对角线上有较小的值,元素(例如y(i) =目标(I)* 1. +目标(i-1)* .5 +目标(i+1)* .5 + ...);有点粗略,但它应该收敛到合理的值。
https://stackoverflow.com/questions/40999776
复制相似问题