Установка и быстрый старт
За несколько шагов создадим сеть из двухвходовых модулей, сохраним её топологию и выполним первый расчёт. Все примеры ниже используют CPU.
Справка описывает программный интерфейс Regnets. Математические основы изложены в теории модульных сетей.
Требования и установка #
Нужен Python 3.13 или новее. Базовая установка включает Matplotlib и
NetworkX. Топология, JSON, построение графов и экспорт рисунков доступны
без PyTorch. Для вычисления и обучения нейронных сетей выберите вариант
regnets[torch].
Установка через pip или uv #
Для использования библиотеки в своём проекте установите пакет из PyPI.
Через pip:
python -m venv .venv
source .venv/bin/activate
python -m pip install regnets
В Windows активируйте окружение командой .venv\Scripts\Activate.ps1.
Для варианта с PyTorch замените последнюю команду на:
python -m pip install 'regnets[torch]'
Через uv:
uv venv --python 3.13
uv pip install regnets
Для варианта с PyTorch замените последнюю команду на:
uv pip install 'regnets[torch]'
uv pip install использует окружение .venv без его активации.
Установка из исходников #
PyPI предоставляет опубликованную версию библиотеки и её зависимости.
Клон репозитория дополнительно содержит готовые примеры (examples/),
утилиты командной строки (tools/), веб-визуализаторы (apps/),
документацию (docs/) и тесты (tests/). Этот способ удобен для запуска
примеров и приложений, изучения и изменения кода; версия библиотеки
определяется выбранной ревизией репозитория.
git clone https://gitverse.ru/gurgutan/self-similar-nets.git
cd self-similar-nets
python -m venv .venv
source .venv/bin/activate
python -m pip install .
Для варианта с PyTorch замените последнюю команду на:
python -m pip install '.[torch]'
Настройка окружения разработки и зависимостей для приложений через uv
описана в порядке разработки.
Создайте топологию #
from regnets.topology.lib import cooley_tukey
topology = cooley_tukey((2, 2, 2))
assert topology.n_layers == 3
assert topology.p == topology.g == (2, 2, 2)
assert topology.sizes == (8, 8, 8, 8)
assert topology.n_modules(0) == 4
indices = topology.permutations()
assert len(indices) == 4
assert all(len(row) == 8 for row in indices)
print(topology.words)
cooley_tukey возвращает объект Topology. В примере у него три слоя
и по восемь контактов на входе, между слоями и на выходе.
Свойства, методы и параметры описаны в справке по топологиям.
Сохраните и откройте JSON #
from regnets.topology.io import load_topology, save_topology
from regnets.topology.lib import cooley_tukey
topology = cooley_tukey((2, 2, 2))
path = save_topology(topology, "topology.json", name="Первый пример")
spec = load_topology(path)
assert spec.topology == topology
assert spec.name == "Первый пример"
В визуализаторе нажмите «Открыть JSON»
и выберите этот файл. Сравните режимы «Контакты» и «Модули».
Файл содержит слова и размерности модулей; веса в него не записываются.
save_topology перезаписывает существующий файл назначения.
Выполните расчёт #
Для этого шага нужен PyTorch. Описания Layer и MLP создают параметры
при построении сети:
import torch
from regnets.kernels import MLP
from regnets.modular import Layer, ModularNet
from regnets.topology.lib import cooley_tukey
torch.manual_seed(7)
net = ModularNet(
cooley_tukey((2, 2, 2)),
Layer(kernel=MLP(hidden=(16,)), in_size=4),
device="cpu",
)
x = torch.randn(2, 8, 4)
y = net(x)
assert y.shape == (2, 8, 4)
Здесь два объекта в пакете, восемь контактов у каждого и вектор длины четыре
на каждом контакте. Ведущие пакетные измерения сохраняются. Для скалярных
контактов пропустите in_size и используйте форму [..., 8].
Следующий шаг — вычисление градиентов и сохранение весов. Если результат отличается от ожидаемого, откройте раздел помощи.