一个围绕numpy的包装器,它执行延迟计算以优化链式矩阵乘法
lazynump的Python项目详细描述
懒散的
对numpy的延迟计算包装器
得到了什么?
- 通过将其他数组的值保留在内存中并解决使计算量最小化的关联问题,链式矩阵乘法将最小化。
- 每个矩阵只保留一个副本[正在进行内存优化]
- 允许在不计算整个矩阵的情况下返回部分矩阵[进行中]
如果您有三个具有如下维度的矩阵,有两种方法可以进行矩阵乘法以找到答案:
或者:
或
[1]需要1000 * 1 * 1000
运算来计算A * B
加上1000 * 1000 * 1000
运算来计算(A * B) * C
。计算A * B * C
的总和等于1000^3 + 1000^2
。
[2]需要1 * 1000 * 1000
运算来计算B * C
加上1000 * 1 * 1000
运算来计算A * (B * C)
。计算A * B * C
的总和等于1000^2 + 1000^2
,这意味着最佳乘法顺序将快~500。
如果你运行the simple example,你会看到一个显著的加速。在我的电脑上,只有三个矩阵运算,速度提高了50倍。