Вывод структуры модели в PyTorch аналогично model.summary() в Keras

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы получить суммарную информацию о модели в PyTorch, вы можете воспользоваться библиотекой torchinfo. Для её установки используйте команду pip install torchinfo. Получить сводку модели можно с помощью функции summary, передав в качестве параметров саму модель и размерность входного тензора:

Python
Скопировать код
from torchinfo import summary
# model – здесь указывается ваша PyTorch модель
# input_size – размерность входного тензора для вашей модели
summary(model, input_size=(3, 224, 224))

Этим способом можно быстро получить всю необходимую информацию о слоях модели, их параметрах и формате выходных тензоров, что незаменимо при проверке правильности архитектуры.

Кинга Идем в IT: пошаговый план для смены профессии

Детальный анализ с pytorch-summary

Библиотека torchinfo предоставляет информацию в обобщённом виде. Но если необходим более глубокий анализ модели, можно воспользоваться pytorch-summary. Это позволит получить информацию о числе параметров и использовании памяти, что необходимо при оптимизации её использования. Если вы работаете не на GPU, замените значение 'cuda' на 'cpu'.

Python
Скопировать код
from torchsummary import summary
# Перед входом в детали обязательно укажите корректное устройство – 'cuda' или 'cpu'
model.to('cuda')
summary(model, (3, 224, 224))

Определение обучаемых и необучаемых параметров

Важной стадией в настройке модели является определение обучаемых слоёв. Следующий код поможет выделить обучаемые параметры:

Python
Скопировать код
print("Слои подлежащие обучению:")
for name, param in model.named_parameters():
    if param.requires_grad:
        print(name)  
# Эти слои обновляются в процессе обучения

Работа с динамическими входами через torchinfo

PyTorch способен динамически воздействовать на граф вычислений, влияя на архитектуру модели. С помощью torchinfo можно учитывать различные размеры входных данных:

Python
Скопировать код
summary(model, input_data=(input1, input2, ...))
# Благодаря разновидностям размеров входных данных, модель можно адаптировать под разные задачи

Визуализация

Можно представить модель PyTorch как механизм, где каждая деталь взаимодействует с другой:

СлойФормат выводаПараметры
Conv2d[1, 64, 24, 24]🔧 Ядра: 320
ReLU[1, 64, 24, 24]🛡️ Без параметров
MaxPool2d[1, 64, 12, 12]📐 Размер: 0
Linear[1, 1000]💡 Веса: 96000

Эта таблица наглядно демонстрирует особенности каждого компонента модели и помогает в очень детальной её настройке.

Всего параметров: 🔢 123,456 Обучаемые параметры: 🏋️‍♀️ 123,000 Необучаемые параметры: 🔒 456

Альтернативные методы в случае невозможности использования внешних зависимостей

Если использование внешних библиотек запрещено, можно использовать простой метод state_dict(), либо просто вывести модель с помощью print(model) для получения базового изображения структуры модели:

Python
Скопировать код
print("Слои и их параметры:")
for param_tensor in model.state_dict():
    print(param_tensor, "\t", model.state_dict()[param_tensor].size())
# Традиционный подход, когда сторонние библиотеки не доступны

Создание собственного метода для сводки модели

Использование собственных методов позволяет настраивать инструменты под конкретные задачи. Вот пример функции для анализа слоёв модели:

Python
Скопировать код
def model_summary(model):
    print("Слой \t\t Тип \t\t количество параметров")
    for name, layer in model.named_modules():
        # Пакеты не всегда необходимы
        if len(list(layer.children())) == 0:
            params = sum(p.numel() for p in layer.parameters())
            print(f"{name} \t {type(layer).__name__} \t {params}")
model_summary(your_model)