Перейти к содержанию

Использование как библиотеки

Версия 0.1.0 — альфа. Поля ExperimentConfig и внутренние модули могут меняться без deprecation.

Стабильный вход 0.1

Импортируйте из пакета, не из файлов скриптов:

from cnn_neat import (
    ExperimentConfig,
    replace_experiment_config,
    run_single_experiment,
    run_evolution,
    CnnNeat,
)
  • ExperimentConfig — frozen dataclass; менять только через replace_experiment_config / dataclasses.replace.
  • run_single_experiment(cfg) — сборка эволвера, val-loader, цикл поколений. CUDA по умолчанию; device=torch.device("cpu") включает host-only overrides.
  • run_single_experiment(cfg, data=ExternalData(...)) — те же мутации, кэш и GD, но входы/цели задаёт вызывающий код (dataset="external"). CIFAR-10 / MNIST без data= не меняются.
  • run_evolution(...) — низкоуровневый цикл, если эволвер уже собран.
  • JSON: python -m cnn_neat и cnn_neat.experiment_io. Тензоры не кладутся в JSON-конфиг.

Произвольные тензоры:

from cnn_neat import ExperimentConfig, ExternalData, run_single_experiment
import torch

val_x = torch.rand(32, 1, 8, 8)       # (N, C, H, W) или (N, V, C, H, W)
val_y = torch.rand(32, 1, 4, 4)       # цели той же формы, что forward_features
data = ExternalData.from_tensors(val_x, val_y)
cfg = ExperimentConfig(
    dataset="external",
    task_mode="regression",
    fitness_metric="mse",
    input_image_size=(8, 8),
    output_image_size=(4, 4),
    input_channels=1,
    population_size=8,
    num_generations=2,
)
run_single_experiment(cfg, data=data, device=torch.device("cpu"))

task_mode="binary" / "multiclass" с ExternalData тоже допустим: тогда targets — индексы классов (N,), фитнес как у CIFAR.

Исследовательские подсистемы (конус размножения, кэш Меркла, OVA-merge) импортируются по пути модуля, см. справочник функций.

Пути без рабочей копии репозитория

Установленный wheel не содержит pyproject.toml репозитория. Пустые поля конфига заполняются так:

Env Назначение Иначе
CNN_NEAT_REPO_ROOT явный clone (Studio/скрипты 06–18) поиск checkout
CNN_NEAT_DATA_ROOT родитель cifar10/ / mnist/ <cwd>/data
CNN_NEAT_RUNS_ROOT артефакты прогонов <cwd>/runs

cnn_neat.paths.repo_root() по-прежнему требует checkout — так устроены GUI и ablation-скрипты. Для библиотечного прогона используйте workspace_root() / data_root() / runs_root() (это делает ExperimentConfig).

Дополнительные зависимости

pip install cnn-neat ставит torch, numpy, tqdm. Для датасетов нужен [vision] (torchvision). Studio/Lab/bot — отдельные extras; пакет apps.* лежит в wheel, но без PySide6 GUI не запустится.

Чем пакет не является

  • Нет speciation классического NEAT.
  • Фазы 2–7 (GBM, ансамбль, fine-tune 10 классов, сравнение с ResNet) — концепт, в коде Фазы 1 нет.
  • Многоклассовый режим (multiclass) — выбор класса по максимуму на концах (tip-argmax) по слитым OVA-чемпионам, не обучаемый softmax на 10 логитов «с нуля».
  • Полноценные OVA-кампании 11/15 — скрипты в репозитории, не console entry points пакета.