Введение:

Pytorch — замечательная библиотека для написания кода машинного обучения на производственном уровне и проектирования моделей глубокого обучения. Сегодня я собираюсь показать самый простой способ использования Pytorch для обучения модели глубокого обучения всего несколькими строками.

Для этого мы будем использовать вспомогательную библиотеку с именем msdlib. Его открытый исходный код, полностью бесплатный и доступный для установки через pip, очень эффективный и дает множество гибких возможностей для обучения моделей, прогнозирования, оценки и т. д.

Давайте посмотрим на код прямо.

Установка библиотек:

Сначала вам нужно открыть командную строку и установить эти две библиотеки для этого руководства.

pip install msdlib
pip install scikit-learn

Вам также необходимо установить pytorch. Вы должны следовать инструкциям здесь https://pytorch.org/, чтобы установить pytorch на основе вашего оборудования.

Импорт библиотек

# torchModel() binary classification example
import pandas as pd
from sklearn.datasets import load_breast_cancer
import torch
import os
from msdlib import msd
from msdlib import mlutils
savepath = 'binary-classification_torchModel'

Здесь мы используем набор данных о раке молочной железы, который содержит данные бинарной классификации. Мы уже загрузили необходимые библиотеки. Теперь мы подготовим набор данных для запуска обучения и оценки.

Подготовка данных:

# Loading the data and separating data and label
source_data = load_breast_cancer()
feature_names = source_data[‘feature_names’].copy()
data = pd.DataFrame(source_data[‘data’], columns=feature_names)
label = pd.Series(source_data[‘target’], name=source_data[‘target_names’][1])

Стандартизация данных и разделение на обучение, проверку и тестирование:

# Standardizing numerical data
data = msd.standardize(data)
# Splitting data set into train, validation and test
splitter = msd.SplitDataset(data, label, test_ratio=.1)
outdata = splitter.random_split(val_ratio=.1)

Модель сборки:

# defining layers inside a list
layers = mlutils.define_layers(
    input_units=data.shape[1],
    output_units=1,
    units_factors=[100, 100, 100, 100, 100, 100],
    dropout_rate=.2,
    model_type='binary-classifier',
    actual_units=True,
    activation=torch.nn.ReLU(),
    final_activation=torch.nn.Sigmoid()
)
# building model
tmodel = mlutils.torchModel(
    layers=layers,
    model_type='binary-classifier',
    tensorboard_path='runs',
    savepath=savepath,
    batch_size=32,
    epoch=80,
    learning_rate=.0001,
    lr_reduce=.995)

Обучение модели:

# Training Pytorch model
tmodel.fit(outdata['train']['data'], outdata['train']['label'])

Оценка модели:

# Evaluating the model's performance
result, all_results = tmodel.evaluate(
    data_sets=[outdata['train']['data'],
    outdata['test']['data']],
    label_sets=[outdata['train']['label'],
    outdata['test']['label']],
    set_names=['Train', 'Test'],
    savepath=savepath)
print('classification score:\n', result)
# scores for classification
print('test scores:\n', all_results['Test'][0])
# confusion matrix for classification
print('test data confusion matrix:\n', all_results['Test'][1].T)

Для получения дополнительной информации и документации по msdlib посетите здесь: https://msdlib.readthedocs.io/en/latest/index.html