西西河

主题:【原创】神经网络和人脑运作的数学原理是相通的 -- 真理

共:💬24 🌺114
全看分页树展 · 主题 跟帖
家园 补充:而且很多“函数”可能还比不上计算器

有时候为了性能,会使用近似算法计算,更极端的甚至根本不用计算:直接把预先算好的值直接存起来用的时候直接拿过来就行了(所谓的“以空间换时间”)。

说到这里想起一个有趣的算法:

John Carmack,IDdSoftware的创始人之一,上世纪Doom和Quake引擎主要开发者之一,曾在书中提到一个神奇的快速计算平凡根倒数的算法,至今还让人啧啧称奇:

float Q_rsqrt( float number )

{

long i;

float x2, y;

const float threehalfs = 1.5F;

x2 = number * 0.5F;

y = number;

i = * ( long * ) &y; // evil floating point bit level hacking

i = 0x5f3759df - ( i >> 1 ); // what the fuck?

y = * ( float * ) &i;

y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration

// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed

return y;

}

如今QuakeIII早就开源了,可以直接看到这段代码,它巧妙发利用了IEEE 754标准,用0x5f3759df这个Magic Number,能在不使用循环和递归的情况下快速计算出平方根的倒数。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河