refactor: 将子模块转为普通目录,移除外部 git 依赖
Sync to site1 / sync (push) Has been cancelled

- 移除 JEPA/lejepa-identifiability 子模块 gitlink
- 移除 research/multiply/MultiPLY 子模块 gitlink
- 删除 .gitmodules(不再有外部 URL 依赖)
- 两个目录内容作为普通文件纳入主仓库追踪
- 删除各自内部 .git 目录,消除嵌套 git 仓库
This commit is contained in:
gaojie
2026-06-05 17:14:01 +08:00
parent cb629f18a1
commit c66855adfc
208 changed files with 23296 additions and 9 deletions
@@ -0,0 +1,30 @@
# 2D illustration + Gaussian half of the regularizer ablation
# python run.py --config configs/2d.yaml --run spiral_lejepa --seed 1337
experiment: 2d
out: results/2d
# Data
N: 2
source_dist: gaussian
num_eval: 10000
# Training (shared)
steps: 20000
lr: 3.0e-3
batch_size: 256
rho: 0.95
log_every: 500
# Per-run specs: 4 mixings x 2 objectives
runs:
spiral_lejepa: {mixing: spiral, encoder: mlp, hidden: 256, mode: lejepa, lamb: 1.0e-3}
spiral_whiten: {mixing: spiral, encoder: mlp, hidden: 256, mode: whiten, lamb: 0.5}
banana_lejepa: {mixing: banana, encoder: mlp, hidden: 256, mode: lejepa, lamb: 1.0e-3}
banana_whiten: {mixing: banana, encoder: mlp, hidden: 256, mode: whiten, lamb: 0.5}
sinusoid_lejepa: {mixing: sinusoid, encoder: mlp, hidden: 256, mode: lejepa, lamb: 1.0e-3}
sinusoid_whiten: {mixing: sinusoid, encoder: mlp, hidden: 256, mode: whiten, lamb: 0.5}
nvp_lejepa: {mixing: nvp, encoder: matched, n_layers: 8, mode: lejepa, lamb: 1.0e-3}
nvp_whiten: {mixing: nvp, encoder: matched, n_layers: 8, mode: whiten, lamb: 0.5}
seeds: [1337, 1338, 1339]
@@ -0,0 +1,32 @@
# Generalized normal sweep across mixings (main-text figure)
# python run.py --config configs/gennorm.yaml --run spiral_lejepa --alpha 2.0 --seed 1337
experiment: gennorm
out: results/gennorm
N: 2
source_dist: gennorm # alpha provided per-run via CLI
num_eval: 10000
steps: 20000
lr: 3.0e-3
batch_size: 256
rho: 0.95
log_every: 500
runs:
spiral_lejepa: {mixing: spiral, encoder: mlp, hidden: 256, mode: lejepa, lamb: 1.0e-3}
spiral_whiten: {mixing: spiral, encoder: mlp, hidden: 256, mode: whiten, lamb: 0.5}
spiral_infonce: {mixing: spiral, encoder: mlp, hidden: 256, mode: infonce, sigma: 1.0}
banana_lejepa: {mixing: banana, encoder: mlp, hidden: 256, mode: lejepa, lamb: 1.0e-3}
banana_whiten: {mixing: banana, encoder: mlp, hidden: 256, mode: whiten, lamb: 0.5}
banana_infonce: {mixing: banana, encoder: mlp, hidden: 256, mode: infonce, sigma: 1.0}
sinusoid_lejepa: {mixing: sinusoid, encoder: mlp, hidden: 256, mode: lejepa, lamb: 1.0e-3}
sinusoid_whiten: {mixing: sinusoid, encoder: mlp, hidden: 256, mode: whiten, lamb: 0.5}
sinusoid_infonce: {mixing: sinusoid, encoder: mlp, hidden: 256, mode: infonce, sigma: 1.0}
nvp_lejepa: {mixing: nvp, encoder: matched, n_layers: 8, mode: lejepa, lamb: 1.0e-3}
nvp_whiten: {mixing: nvp, encoder: matched, n_layers: 8, mode: whiten, lamb: 0.5}
nvp_infonce: {mixing: nvp, encoder: matched, n_layers: 8, mode: infonce, sigma: 1.0}
alphas: [0.125, 0.25, 0.5, 1.0, 2.0, 4.0, 8.0, 16.0, 32.0]
seeds: [1337, 1338, 1339]
@@ -0,0 +1,27 @@
# Grid search over lambda and rho (bound verification figure)
# python run.py --config configs/grid.yaml --lamb 0.01 --rho 0.9 --seed 0
experiment: grid
out: results/grid
# Data
N: 2
source_dist: gaussian
num_eval: 10000
# Training (shared)
steps: 20000
lr: 3.0e-3
batch_size: 256
log_every: 500
# Encoder
encoder: mlp
hidden: 256
mixing: spiral
mode: lejepa
# Sweep dimensions
lambs: [1.0e-6, 1.0e-5, 1.0e-4, 1.0e-3, 5.0e-3, 1.0e-2, 5.0e-2, 1.0e-1, 5.0e-1]
rhos: [0.3, 0.5, 0.7, 0.8, 0.9, 0.95, 0.99]
seeds: [0, 1, 2]
@@ -0,0 +1,29 @@
# Reacher pixel-observation identifiability experiment
# Works for both OU and trajectory data — just point --data_dir at the right place.
#
# Prerender:
# python prerender.py eval
# python prerender.py ou --rho 0.95
# python prerender.py traj --delta 16 --h5_path data/reacher.h5
#
# Train:
# python run_reacher.py --config configs/reacher.yaml \
# --data_dir data/reacher/ou/rho=0.95
experiment: reacher
out: results/reacher
data_root: data/reacher
# Model
d_latent: 2
# Training
epochs: 100
batch_size: 256
lr: 3.0e-3
n_slices: 256
n_eval_fast: 2000
# Sweep dimensions
lambs: [1.0e-3, 5.0e-3, 1.0e-2, 5.0e-2]
seeds: [0, 1, 2]
@@ -0,0 +1,36 @@
# Scaling experiment (paper figure)
# python run.py --config configs/scaling.yaml --N 16 --seed 0
# python run.py --config configs/scaling.yaml --N 16 --seed 0 --mode infonce
# python run.py --config configs/scaling.yaml --N 16 --seed 0 --mode whiten
experiment: scaling
out: results/scaling
# Data
source_dist: gaussian
num_eval: 10000
# Training (shared)
steps: 20000
lr: 3.0e-3
batch_size: 256
rho: 0.95
log_every: 500
# Encoder
encoder: matched
n_layers: 4
mode: lejepa # default; override with --mode
# Mode-specific defaults (used based on --mode)
lamb: 1.0e-6 # for lejepa
lamb_whiten: 0.5 # used when mode=whiten
sigma: 1.0 # for infonce
# Mixing
mixing: coupling
# Sweep dimensions
dims: [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
seeds: [0, 1, 2, 3, 4]
K: 3 # parallel encoder runs per (N, seed); pick lowest loss