Примеры TensorFlow
Это руководство было разработано для легкого погружения в TensorFlow с помощью примеров. Для удобства чтения он включает как блокноты, так и исходные коды с пояснениями как для TF v1, так и для v2.
Он подходит для новичков, которые хотят найти четкие и краткие примеры TensorFlow. Помимо традиционных «сырых» реализаций TensorFlow, вы также можете найти новейшие практики API TensorFlow (такие как layers
, estimator
, dataset
, ...).
Обновление (16.05.2020): Перенос всех примеров по умолчанию в TF2. Примеры TF v1: проверьте здесь.
Индекс учебника
0 – необходимое условие
- Введение в машинное обучение.
- Введение в набор данных MNIST.
1 - Введение
- Привет, мир (блокнот). Очень простой пример, чтобы научиться печатать «привет, мир» с помощью TensorFlow 2.0+.
- Основные операции (тетрадь). Простой пример, охватывающий основные операции TensorFlow 2.0+.
2 - Базовые модели
- Линейная регрессия (тетрадь). Реализуйте линейную регрессию с помощью TensorFlow 2.0+.
- Логистическая регрессия (тетрадь). Реализуйте логистическую регрессию с помощью TensorFlow 2.0+.
- Word2Vec (Word Embedding) (ноутбук). Создайте модель внедрения слов (Word2Vec) на основе данных Википедии с помощью TensorFlow 2.0+.
- GBDT (деревья решений с градиентным усилением) (ноутбуки). Внедрите деревья решений с градиентным усилением с помощью TensorFlow 2.0+ для прогнозирования стоимости дома с использованием набора данных Boston Housing.
3 - Нейронные сети
Контролируемый
- Простая нейронная сеть (тетрадь). Используйте API «слоев» и «модели» TensorFlow 2.0 для создания простой нейронной сети для классификации набора данных MNIST.
- Простая нейронная сеть (низкоуровневая) (ноутбук). Необработанная реализация простой нейронной сети для классификации набора цифр MNIST.
- Сверточная нейронная сеть (тетрадь). Используйте API «слоев» и «модели» TensorFlow 2.0+ для создания сверточной нейронной сети для классификации набора данных MNIST.
- Сверточная нейронная сеть (низкоуровневая) (тетрадь). Необработанная реализация сверточной нейронной сети для классификации набора цифр MNIST.
- Рекуррентная нейронная сеть (LSTM) (тетрадь). Создайте рекуррентную нейронную сеть (LSTM) для классификации набора цифр MNIST, используя API «слоев» и «модели» TensorFlow 2.0.
- Двунаправленная рекуррентная нейронная сеть (LSTM) (ноутбук). Создайте двунаправленную рекуррентную нейронную сеть (LSTM) для классификации набора цифр MNIST, используя API «слоев» и «модели» TensorFlow 2.0+.
- Динамическая рекуррентная нейронная сеть (LSTM) (ноутбук). Создайте рекуррентную нейронную сеть (LSTM), которая выполняет динамические вычисления для классификации последовательностей переменной длины, используя «слои» и API «модели» TensorFlow 2.0+.
Без присмотра
- Автокодировщик (ноутбук). Создайте автокодер для кодирования изображения в меньшее измерение и реконструируйте его.
- DCGAN (Deep Convolutional Generative Adversarial Networks) (тетрадь). Создайте глубокую сверточную генеративно-состязательную сеть (DCGAN) для генерации изображений из шума.
4 - Утилиты
- Сохранить и восстановить модель (ноутбук). Сохраните и восстановите модель с помощью TensorFlow 2.0+.
- Создавайте собственные слои и модули (блокнот). Узнайте, как создавать свои собственные слои/модули и интегрировать их в модели TensorFlow 2.0+.
- Тензорборд (блокнот). Отслеживайте и визуализируйте график вычислений нейронной сети, метрики, веса и многое другое с помощью тензорной доски TensorFlow 2.0+.
5 - Управление данными
- Загрузка и анализ данных (блокнот). Создайте эффективный конвейер данных с помощью TensorFlow 2.0 (массивы Numpy, изображения, файлы CSV, пользовательские данные,...).
- Создайте и загрузите TFRecords (ноутбук). Преобразуйте данные в формат TFRecords и загрузите их с помощью TensorFlow 2.0+.
- Трансформация изображения (т.е. увеличение изображения) (блокнот). Применяйте различные методы увеличения изображений с помощью TensorFlow 2.0+ для создания искаженных изображений для обучения.
6 - Аппаратное обеспечение
- Обучение работе с несколькими графическими процессорами (ноутбук). Обучите сверточную нейронную сеть с несколькими графическими процессорами на наборе данных CIFAR-10.
ТензорФлоу v1
Указатель учебных пособий для TF v1 доступен здесь: Примеры TensorFlow v1.15. Или посмотрите ниже список примеров.
Набор данных
В некоторых примерах для обучения и тестирования требуется набор данных MNIST. Не волнуйтесь, этот набор данных будет автоматически загружен при запуске примеров. MNIST — это база данных рукописных цифр. Для быстрого описания этого набора данных вы можете просмотреть этот блокнот.
Официальный сайт: http://yann.lecun.com/exdb/mnist/.
Установка
Чтобы скачать все примеры, просто клонируйте этот репозиторий:
git clone https://github.com/aymericdamien/TensorFlow-Examples
Для их запуска вам также понадобится последняя версия TensorFlow. Чтобы установить его:
или (с поддержкой графического процессора):
pip install tensorflow_gpu
Для получения более подробной информации об установке TensorFlow вы можете ознакомиться с Руководством по установке TensorFlow.
Примеры TensorFlow v1 — указатель
Указатель учебных пособий для TF v1 доступен здесь: Примеры TensorFlow v1.15.
0 – необходимое условие
- Введение в машинное обучение.
- Введение в набор данных MNIST.
1 - Введение
- Hello World (блокнот) (код). Очень простой пример, чтобы научиться печатать «привет, мир» с помощью TensorFlow.
- Основные операции (тетрадь) (код). Простой пример, охватывающий основные операции TensorFlow.
- Основы TensorFlow Eager API (блокнот) (код). Начните работу с API Eager от TensorFlow.
2 - Базовые модели
- Линейная регрессия (тетрадь) (код). Реализуйте линейную регрессию с помощью TensorFlow.
- Линейная регрессия (энергичный API) (блокнот) (код). Реализуйте линейную регрессию с помощью Eager API TensorFlow.
- Логистическая регрессия (тетрадь) (код). Реализуйте логистическую регрессию с помощью TensorFlow.
- Логистическая регрессия (энергичный API) (блокнот) (код). Реализуйте логистическую регрессию с помощью Eager API TensorFlow.
- Ближайший сосед (блокнот) (код). Реализуйте алгоритм ближайшего соседа с помощью TensorFlow.
- K-Means (тетрадь) (код). Создайте классификатор K-Means с помощью TensorFlow.
- Случайный лес (тетрадь) (код). Создайте классификатор случайного леса с помощью TensorFlow.
- Дерево решений с градиентным усилением (GBDT) (блокнот) (код). Создайте дерево решений с градиентным усилением (GBDT) с помощью TensorFlow.
- Word2Vec (Word Embedding) (блокнот) (код). Создайте модель внедрения слов (Word2Vec) на основе данных Википедии с помощью TensorFlow.
3 - Нейронные сети
Контролируемый
- Простая нейронная сеть (тетрадь) (код). Создайте простую нейронную сеть (также известную как многослойный персептрон) для классификации набора цифр MNIST. Необработанная реализация TensorFlow.
- Простая нейронная сеть (tf.layers/estimator api) (блокнот) (код). Используйте API «слоев» и «оценщика» TensorFlow для создания простой нейронной сети (также известной как многослойный персептрон) для классификации набора цифр MNIST.
- Простая нейронная сеть (нетерпеливый API) (ноутбук) (код). Используйте TensorFlow Eager API для создания простой нейронной сети (также известной как многослойный персептрон) для классификации набора данных MNIST.
- Сверточная нейронная сеть (тетрадь) (код). Создайте сверточную нейронную сеть для классификации набора данных цифр MNIST. Необработанная реализация TensorFlow.
- Сверточная нейронная сеть (tf.layers/estimator api) (блокнот) (код). Используйте API-интерфейс «слоев» и «оценщика» TensorFlow для создания сверточной нейронной сети для классификации набора данных цифр MNIST.
- Рекуррентная нейронная сеть (LSTM) (блокнот) (код). Создайте рекуррентную нейронную сеть (LSTM) для классификации набора данных MNIST.
- Двунаправленная рекуррентная нейронная сеть (LSTM) (ноутбук) (код). Создайте двунаправленную рекуррентную нейронную сеть (LSTM) для классификации набора данных цифр MNIST.
- Динамическая рекуррентная нейронная сеть (LSTM) (ноутбук) (код). Создайте рекуррентную нейронную сеть (LSTM), которая выполняет динамические вычисления для классификации последовательностей разной длины.
Без присмотра
- Автокодировщик (ноутбук) (код). Создайте автокодер для кодирования изображения в меньшее измерение и реконструируйте его.
- Вариационный автокодировщик (ноутбук) (код). Создайте вариационный автокодировщик (VAE), чтобы кодировать и генерировать изображения из шума.
- GAN (Generative Adversarial Networks) (тетрадь) (код). Создайте генеративно-состязательную сеть (GAN) для генерации изображений из шума.
- DCGAN (Deep Convolutional Generative Adversarial Networks) (тетрадь) (код). Создайте глубокую сверточную генеративно-состязательную сеть (DCGAN) для генерации изображений из шума.
4 - Утилиты
- Сохранить и восстановить модель (ноутбук) (код). Сохраните и восстановите модель с помощью TensorFlow.
- Tensorboard — визуализация графиков и потерь (блокнот) (код). Используйте Tensorboard, чтобы визуализировать график вычислений и построить график потерь.
- Tensorboard — Расширенная визуализация (блокнот) (код). Углубляемся в Tensorboard; визуализируйте переменные, градиенты и многое другое...
5 - Управление данными
- Создайте набор данных изображений (блокнот) (код). Создайте свой собственный набор данных изображений с помощью очередей данных TensorFlow из папок изображений или файла набора данных.
- API набора данных TensorFlow (блокнот) (код). Представляем API набора данных TensorFlow для оптимизации конвейера входных данных.
- Загрузка и анализ данных (блокнот). Создайте эффективный конвейер данных (массивы Numpy, изображения, файлы CSV, пользовательские данные,...).
- Создайте и загрузите TFRecords (ноутбук). Преобразуйте данные в формат TFRecords и загрузите их.
- Трансформация изображения (т.е. увеличение изображения) (блокнот). Применяйте различные методы увеличения изображений, чтобы создавать искаженные изображения для обучения.
6 – несколько графических процессоров
- Основные операции на нескольких графических процессорах (ноутбуке) (код). Простой пример внедрения нескольких графических процессоров в TensorFlow.
- Обучение нейронной сети на нескольких графических процессорах (ноутбуке) (код). Понятная и простая реализация TensorFlow для обучения сверточной нейронной сети на нескольких графических процессорах.
Больше примеров
Следующие примеры взяты из TFLearn, библиотеки, предоставляющей упрощенный интерфейс для TensorFlow. Вы можете посмотреть, там много примеров и готовых операций и слоев.
Учебники
- TFИзучите Краткое руководство. Изучите основы TFLearn, выполнив конкретную задачу машинного обучения. Создайте и обучите классификатор глубокой нейронной сети.
Примеры
- TFИзучите примеры. Большая коллекция примеров использования TFLearn.