田海立@CSDN 2020-10-11
TensorFlow裡的運算元round不是什麼四捨五入,而是Bankers Rounding——四捨六入五取偶。
用搜尋工具搜尋,如果不是連結到官方網站的話,特別是到連結到中文描述,看起來還很官方的樣子的地方,會把round就直接翻譯成「四捨五入」,希望你再搜尋的時候,看到的是本文的描述。
搜尋tf.round,結果第一條的誤導性描述:
https://www.w3cschool.cn/tensorflow_python/tensorflow_python-cnvw2in5.html
上面這一段應該是官方描述的翻譯,但這翻譯也太誤導了。
下面看官方(也不是TF的官網,但這是能被搜尋到並開啟的)的描述:
https://tensorflow.google.cn/api_docs/python/tf/math/round
所以,TensorFlow裡的round是Rounds half to even,也就是Bankers Rounding。
TF官網沒有具體的描述Bankers Rounding是什麼,但Bankers Rounding是容易找到的
http://wiki.c2.com/?BankersRounding
總結起來就是,取最近的偶數整數,具體來說:
這樣取得的整數結果就是偶數了。
所以Bankers Rounding也通常被稱做「四捨六入五取偶」。
例子中: