田海立@CSDN 2020-10-11
TensorFlow里的算子round不是什么四舍五入,而是Bankers Rounding——四舍六入五取偶,
用搜索工具搜索,如果不是鏈接到官方網站的話,特別是到鏈接到中文描述,看起來還很官方的樣子的地方,會把round就直接翻譯成“四舍五入”,希望你再搜索的時候,看到的是本文的描述,
誤導性的解釋
搜索tf.round,結果第一條的誤導性描述:
https://www.w3cschool.cn/tensorflow_python/tensorflow_python-cnvw2in5.html

上面這一段應該是官方描述的翻譯,但這翻譯也太誤導了,
TF官方描述
下面看官方(也不是TF的官網,但這是能被搜索到并打開的)的描述:
https://tensorflow.google.cn/api_docs/python/tf/math/round

所以,TensorFlow里的round是Rounds half to even,也就是Bankers Rounding,
Bankers Rounding是什么
TF官網沒有具體的描述Bankers Rounding是什么,但Bankers Rounding是容易找到的
http://wiki.c2.com/?BankersRounding
總結起來就是,取最近的偶數整數,具體來說:
- 小數部分小于0.5,則舍去;
- 小數部分大于0.5(注:0.5...x 也是大于0.5的),則進位;
- 小數部分恰好為0.5,則要看整數部分,也就是:
- 整數為偶數則舍去小數;
- 整數為奇數則進位到整數
這樣取得的整數結果就是偶數了,
所以Bankers Rounding也通常被稱做“四舍六入五取偶”,
例子中:
- 0.9 -> 1:case#2,進位;
- 2.5 -> 2:case#3,2為偶數,小數舍去;
- 2.3 -> 2:case#1,舍去;
- 1.5 -> 2:case#3,1為奇數,小數進位;
- -4.5 -> -4:case#3,-4為偶數,小數舍去,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/171562.html
標籤:其他
上一篇:可惡的面試題
