产生背景:
在人工智能·神经元网络中,一个参数用1字节表示即可,或者说,这是个猜想:因为图像的颜色用8比特表示就够了,所以说,猜想神经元的区分度应该小于256。
另外,在“神经元网络应用于图像压缩”的实验中,需要参数尽可能少占用空间,以求更高的压缩率。所以,有必要研究8比特的浮点数格式。
方案一、模仿32位的float和64位的double,用一部分比特表示基数、剩下的比特位表示指数,用科学计数法表示浮点数。
方案二、用查表法记住256个常用值。包括:
-100到+100,共201个,剩55个。
27个正数、27个负数,1个异常。
0.01到1.00,共100个。
1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9 9.5 10,共18个。
20 30 40 50 60 70 80 90 100,共9个。
正数共127个,还有负数127个,一个0,一个异常,总共256个。举例如下:
1000.0000(-128) -> 异常,FT
-127 -> -100
-118 -> -10
1001.1011(-101) -> -1.5
1001.1100(-100) -> -1.00
1111.1111(-1) -> -0.01
0000.0000(0) -> 0, PFT
0000.0001 -> 0.01
0110.0100(100) -> 1.00
0111.0110(118) -> 10
0111.1111(127) -> 100
程序举例:
float FT[256],f,*PFT;
char x;//-128到+127
PFT=FT+128;
x=random_int(-100, +100);
f=PFT[x];