![](/img/trans.png)
[英]How to replace tensorflow softmax with max for generating one hot vector at the output layer of Neural Network?
[英]How to take the difference between the resulting and the correct bucket of a one hot vector into account?
嗨,我正在大學使用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個零和一個用於正確存儲區的1。 我的問題是。 我如何考慮例如正確的存儲桶是否位於索引25處,則26的預測要比48的預測好得多。
我沒有發布實際的網絡,因為它只是幾個conv2d和maxpool層,最后是一個完全連接的層。
由於您正在應用交叉熵或負對數可能性。 給定預測的輸出和基本事實,您將對系統進行懲罰。
因此,假設您的系統在50個類別的輸出上預測了不同的數字,而最高的數字是25類,但您的實際情況是26類。因此,系統將采用26的預測值,並調整參數以產生最大的數字。下次看到此輸入時,此輸出。
您可以做兩件事:
將您的y和預測更改為-1..1范圍內的標量; 使損失函數為(y-預測)** 2或其他值。 一個非常不同的模型,但也許比單熱模型更合理。
保持單一目標和損失,但具有y = target * w,其中w是一個常數矩陣,大部分為零,對角線為1s,下一個對角線為較小值(例如y(i)= target( i)* 1. + target(i-1)* .5 + target(i + 1)* .5 + ...); 有點毛,但應該收斂到合理的水平。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.