正常训练神经网络的框架例如pytorch,tensorflow都只支持浮点型运算
但是如果我们的数据都是超大整数(有效2进制数字在100位以上)呢?如果强行将大整数转换为float或者double类型,由于python(很多其他语言也是这样)的float32和float64(double)分别遵从IEEE754单精度和双精度标准,其能表达的有效数字分别只有23位和52位,因此当我们把超大整数(有效2进制数在100位以上)转为float时必然会损失很多有效数字。对于float64来讲超出52位有效数字的计算就是不精确的,如果超出很多(假设数据为128位),计算的误差也就会很大,对于模型的影响很大。
那么只能考虑自己写一个基于大整数运算的神经网络,numpy是手写神经网络最合适的工具,下面看看numpy支持的数据类型: