一个对应 Harnessing Deep Neural Networks with Logic Rules 的扩展 toy reproduction。
当前版本已经不只是最小单次实验,而是支持:
任务是二维二分类。
(x1, x2)single_good
x1 > x2 => class 1single_bad
x1 > x2 => class 0multi_good
x1 > x2 => class 1x1 > 0.15 => class 1x2 < 0.10 => class 1multi_mixed
multi_bad
这几组规则分别用于:
这个 toy 保留了原论文最核心的结构:
student -> teacher -> student简化部分:
01_logic_net_toy/
README.md
notes.md
config.py
data.py
experiment.py
model.py
rules.py
sweep.py
trainer.py
run.py
results/
默认运行:
python run.py
带规则集和实验名:
python run.py --rule-set multi_good --experiment-name multi_good_demo
错误规则对照:
python run.py --rule-set single_bad --experiment-name wrong_rule_demo
跳过画图:
python run.py --epochs 80 --rule-set multi_mixed --skip-plots
最常用的扫描命令:
python sweep.py --name quick_scan --epochs 40
自定义扫描:
python sweep.py ^
--name labeled_vs_rules ^
--epochs 50 ^
--seeds 7,13 ^
--num-labeled-values 32,64,128 ^
--rule-strengths 0.5,1.0,1.5 ^
--distill-weights 0.35,0.65 ^
--rule-sets single_good,single_bad,multi_good,multi_mixed,multi_bad
扫描结果会输出到:
results/sweeps/<name>/summary.jsonresults/sweeps/<name>/summary.csvresults/sweeps/<name>/best_run.json每个组合的单独 metrics.json 也会保留。
单次实验默认会在 results/<experiment_name>/ 下生成:
metrics.jsondecision_boundaries.pngtraining_curves.pngsingle_good vs single_bad
single_good vs multi_good
multi_good vs multi_mixed
multi_good vs multi_bad