👨‍🎨 NFT и криптопанки: пишем нейросеть для их генерации

Новейшая разработка торговых роботов SCALPER DUO GX3.
7 часов назад
Получи все нужные навыки для заработка на NFT всего за 28 дней!
9 часов назад

Alex Maszański

Что такое NFT и криптопанки?

NFT (Non Fungible Tokens) — это невосстановимые уникальные токены, которые торгуются и обмениваются на блокчейне Ethereum.

CryptoPunks — это набор из 10 000 уникальных коллекционных персонажей, каждый из которых представляет собой уникальный аватар размером 24×24 пикселя в 8-битном стиле. Доказательство владения хранится в блокчейне Ethereum.

Их создание началось в 2017 году как эксперимент разработчиков программного обеспечения Мэтта Холла и Джона Аткинсона; криптопанков вдохновил стандарт ERC-721, на котором сегодня основано большинство цифровых произведений искусства и коллекционных товаров.

Это была первая серия NFT, вызвавшая интерес общественности, и сегодня она является одной из наиболее активно торгуемых серий «HYIP».

Рыночная капитализация всех 10 000 CryptoPunks в настоящее время оценивается более чем в миллиарды долларов США.

В этой статье используется DCGAN (Deep Convolutional Generative Adversarial Network), которая обучается на наборе данных CryptoPunks, пытаясь генерировать новых «панков» на основе существующих. Данные, полученные в ходе проекта, можно загрузить здесь. Если вы еще не знакомы с платформой Kaggle и ее использованием, рекомендуем прочитать следующее 📊 Kaggle за 30: практическое руководство для новичков.

Почему нейросеть с таким сложным названием?

Группа нейронных сетей GAN относится к группе методов обучения без надзора, называемых генетическими моделями. Это тип модели машинного обучения, используемый для более детального описания явлений в данных, что позволяет обучать модель с лучшими результатами.

Генеративные модели и GAN были одними из самых успешных разработок в области компьютерного зрения в последние годы. Они могут использоваться для автоматического изучения особенностей, параметров и многих других элементов исследуемого набора данных.

Загрузка данных и препроцессинг

Весь код доступен в репозитории github. Вот основные моменты, необходимые для понимания нейронных сетей

Посмотрите на первые 100 изображений. Прежде чем сделать это, мы определили количество строк и столбцов.

Очистите свой набор данных и сохраните действительно нужные столбцы.

eth — Цена криптовалюты Ethereum.

punk_id — Идентификатор криптовалюты.

type — Его тип (инопланетянин, зомби, мужчина/женщина).

особенности — характеристики изображения.

Сравните цены на токены NFT в зависимости от их типа («пришелец», «зомби» и т.д.).

Как вы видите, цена инопланетного класса «Бродяга» самая высокая.

Чтобы нейронная сеть GAN функционировала должным образом, код должен иметь следующую структуру

  1. Функция отображения изображения и считывания данных
  2. Генератор
  3. Ненавязчивый
  4. Параметры модели и функция потерь
  5. Код для запуска обучения и генерации изображений

Функции

def tensor_imshow() — функция для отображения изображения. Здесь описаны общие переменные изображения и его размеры.

def get_dataloader() — функция для загрузки данных. Размещает трансформатор (созданный для изменения изображения в соответствующий формат), переменные самого набора данных и его загрузчика.

Новейшая разработка торговых роботов SCALPER DUO GX3.
7 часов назад
«Эксель» и «Гугл-таблицы» для начинающих. Подходит для всех! Рассказываем, как сделать свою жизнь проще с помощью табличек.
6 часов назад

Структура генератора

Класс Generator генерирует фиктивные данные, используя обратную связь дискриминатора (подробнее см. ниже). Таким образом, он обучает классификатор распознавать реальные данные. Это необходимо для более точного функционирования модели и является неотъемлемой частью GAN. Обучение генератора требует более тесной интеграции генератора и дискриминатора, чем обучение самого дискриминатора.

Структура дискриминатора

Разделитель нейронных сетей Ган — это простой классмейкер. Его цель — отличить фактические данные от данных, созданных генератором. Можно использовать любую архитектуру, если она соответствует типу данных, отсортированных по отдельности.

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

Параметры для модели

Сначала необходимо инициализировать размеры. По мнению Яна Гудфеллоу, одного из основателей современного глубокого обучения, наилучшие значения коэффициентов = 0 и stdev = 0,2.

Функция потерь

Это используется для расчета ошибки между фактическим и полученным ответами. Наша главная цель — сделать эту ошибку как можно меньше. Поэтому функция потерь эффективно приближает обучение нейронных сетей к этой цели.

Теперь мы инициализируем параметры критерия и функции потерь, размер партии и метки.

def real_loss() — реальный убыток.

def fake_loss() — ложный убыток. Требуется для работы генератора.

В каждом из них сначала запускаются параметры критерия (reference) и функции потерь, размер партии (batch_size) и метка.

Тренировка модели

def print_tensor_images () — функция изображения: дайте кожевнику и получите фотографии.

def Train () — будущее обучение с необходимыми гиперпараметрами для генератора и сепаратора.

И, наконец, тренируйте саму модель!

Введите общее число всех гиперпараметров.

Вам необходим максимально возможный баланс между генератором и сепаратором. Для достижения наилучших результатов добавьте оптимизацию Адама к каждому пункту в отдельности.

Инициализируйте генератор и сепаратор и настройте оптимизатор Адама с помощью G_OPTIMIZER и D_OPTIMIZER соответственно.

Начните обучение! Введите указанные выше параметры.

Вы обнаружите, что индивидуум немного лучше, чем генератор, особенно на начальных этапах. Это объясняется тем, что их функция проще. Сбалансировать две модели типичного GAN очень сложно, но то, что вы делали раньше, имеет значение. В противном случае разрыв между двумя элементами в модели мог бы быть гораздо больше.

Используйте образованную модель и сохраните ее для создания нового изображения.

Генерируем новых криптопанков

Конец! Нейронная сеть, которую мы написали, создает изображение криптопанка. Мы проделали большую работу и надеемся, что вам понравится.

Основная цель этой статьи — дать базовое представление о конвейере, используемом для создания нейронных сетей, которые создают различные изображения. В данном случае в качестве примера мы взяли популярную тему ваучеров NFT — Cryptopunks.

Трубопровод включает в себя:.

  1. Анализ данных, чтобы понять, какие нейронные сети являются наиболее подходящими (в нашем случае GANs, генеративные побочные продукты)
  2. Понимание интуиции, лежащей в основе выбранной нейронной сети. Этот генератор «конкуренции» и отдельные генераторы должны быть написаны.
  3. Определите соответствующие параметры модели, ее обучение и хранение.
  4. Создание новых изображений на основе обученной модели.

Исходя из этого, базовое решение, описанное выше, может быть улучшено. Например, попробовать разные параметры перед обучением или использовать разные методы оптимизации. Вы даже можете попробовать разные нейронные сети для получения лучших результатов.

Бесконечная область глубокого обучения — это искусство, которое можно покорить, сочетая различные техники с самыми смелыми подходами.

Индикатор Heir Wolf-TF – это уникальный инструмент, который позволяет визуально быстро определить...
6 часов назад
Стань экспертом по маркетплейсам и управляй своими заработком
10 часов назад

Читайте также