nd2py.core.transform package#
Submodules#
nd2py.core.transform.bfgs_fit module#
nd2py.core.transform.fix_nettype module#
- class nd2py.core.transform.fix_nettype.FixNetType[source]#
Bases:
Visitor- generic_visit(node, *args, **kwargs) _Type[source]#
direction = ‘top-down’: 每个 node 的 nettype 由 kwargs[‘nettype’] 决定。 direction = ‘bottom-up’: 每个 node 的 nettype 由其 operands 决定。只保证每个 node 运算不会出错即可,不需要对 kwargs[‘nettype’] 负责
- visit_Add(node, *args, **kwargs) _Type#
- visit_Sub(node, *args, **kwargs) _Type#
- visit_Mul(node, *args, **kwargs) _Type#
- visit_Div(node, *args, **kwargs) _Type#
- visit_Pow(node, *args, **kwargs) _Type#
- visit_Max(node, *args, **kwargs) _Type#
- visit_Min(node, *args, **kwargs) _Type#
- visit_Rgga(node, *args, **kwargs) _Type#
- visit_Targ(node, *args, **kwargs) _Type#
nd2py.core.transform.fold_constant module#
nd2py.core.transform.reduce module#
- class nd2py.core.transform.reduce.Reduce(n_variables=4, constants=[0, 1, -1, 3.141592653589793, 2.718281828459045], binary=None, unary=None, max_online_iterations: int = 10, load_cache: bool = True, num_anchors=100)[source]#
Bases:
object- __init__(n_variables=4, constants=[0, 1, -1, 3.141592653589793, 2.718281828459045], binary=None, unary=None, max_online_iterations: int = 10, load_cache: bool = True, num_anchors=100)[source]#
- prepare_rule_dict(l_max: int = 8, force_rebuild: bool = False, save_cache: bool = True, show_progress: bool = True)[source]#
离线阶段:基于 Kruskal 最小生成森林算法的变体发现化简规则并构建 reduce_rules 字典。
这是单进程版本,按顺序处理每个表达式。
- Parameters:
l_max – 最大表达式长度
force_rebuild – 是否强制重新构建(忽略缓存)
save_cache – 是否将构建结果缓存到文件
show_progress – 是否显示进度条
- prepare_rule_dict_parallel(l_max: int = 8, n_jobs: int = -1, batch_size: int = 10000, force_rebuild: bool = False, save_cache: bool = True, show_progress: bool = True)[source]#
离线阶段:基于 Kruskal 最小生成森林算法的变体发现化简规则并构建 reduce_rules 字典。
这是多进程版本,使用 joblib.Parallel 加速同一长度内的表达式处理。
- Parameters:
l_max – 最大表达式长度
n_jobs – 并行进程数,-1 表示使用所有 CPU 核心
force_rebuild – 是否强制重新构建(忽略缓存)
save_cache – 是否将构建结果缓存到文件
show_progress – 是否显示进度条
- static get_start_length(hash_dict: Dict, reduce_rules: List[ReduceRule]) int[source]#
获取应该从哪个长度开始处理(跳过已缓存的)