Учебники и руководства по TensorFlow 2 на сайте tensorflow.org — отличные ресурсы для изучения и применения нейтральных сетей. Но, поскольку они предоставлены многими авторами, стили подачи материалов неизбежно разнообразны.

Различные стили программирования кажутся непосильными для начинающих учеников, хотя они помогают нам освоить разные подходы к одним и тем же задачам.

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



Начнем с того, как импортировать наборы данных в TensorFlow. В учебниках и руководствах используются 3 разных подхода.

I. Используйте tf.keras.datasets

Самый простой способ. Просто загрузите данные из предопределенных модулей.

  1. Учебные пособия › Основы машинного обучения с Keras › Базовая классификация изображений
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()

Загрузка набора данных возвращает четыре массива NumPy:

  • Массивы train_images и train_labels представляют собой обучающий набор — данные, которые модель использует для обучения.
  • Модель тестируется на основе тестового набора, массивов test_images и test_labels.

Изображения представляют собой массивы NumPy 28x28 со значениями пикселей в диапазоне от 0 до 255. метки представляют собой массив целых чисел в диапазоне от 0 до 9. Они соответствуют классу одежда, которую представляет изображение.

Примечание. Вам необходимо знать кортежи.

2. Tutorial › Основы машинного обучения с Keras › Сохранение и загрузка

(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()
train_labels = train_labels[:1000]
test_labels = test_labels[:1000]
train_images = train_images[:1000].reshape(-1, 28 * 28) / 255.0
test_images = test_images[:1000].reshape(-1, 28 * 28) / 255.0

Примечание. Если один из компонентов shape имеет специальное значение -1, размер этого измерения вычисляется таким образом, чтобы общий размер оставался постоянным.

3. Учебное пособие › Основы машинного обучения с Keras › Настройка гиперпараметров с помощью Keras Tuner

(img_train, label_train), (img_test, label_test) = keras.datasets.fashion_mnist.load_data()
# Normalize pixel values between 0 and 1
img_train = img_train.astype('float32') / 255.0
img_test = img_test.astype('float32') / 255.0

II. Используйте tf.keras.utils.get_file()

Он загружает файл с URL-адреса, если он еще не находится в кеше. Определение функции следующее:

tf.keras.utils.get_file(
    fname, origin, untar=False, md5_hash=None, file_hash=None,
    cache_subdir='datasets', hash_algorithm='auto', extract=False,
    archive_format='auto', cache_dir=None
)

Примечание. Обязательны первые два аргумента.

  1. Учебные пособия › Основы машинного обучения с Keras › Базовая классификация текста
# Tutorials > ML basics with Keras > Basic text classifiation
url = "https://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz"
dataset = tf.keras.utils.get_file("aclImdb_v1.tar.gz", url,
                                    untar=True, cache_dir='.',
                                    cache_subdir='')

Возвращаемое значение — это путь к загруженному файлу, а не сам файл. Чтобы использовать файл, нам нужны некоторые манипуляции с путями.

dataset_dir = os.path.join(os.path.dirname(dataset), 'aclImdb')
os.listdir(dataset_dir)
train_dir = os.path.join(dataset_dir, 'train')
os.listdir(train_dir)
# Take a look at one of them
sample_file = os.path.join(train_dir, 'pos/1181_9.txt')
with open(sample_file) as f:
  print(f.read())

2. Учебное пособие › Основы машинного обучения с Keras › Базовая регрессия: прогнозирование эффективности использования топлива

dataset_path = keras.utils.get_file("auto-mpg.data", "http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data")
dataset_path

3. Учебное пособие › Основы ML с Keras › Overfit и underfit

gz = tf.keras.utils.get_file('HIGGS.csv.gz', 'http://mlphysics.ics.uci.edu/data/higgs/HIGGS.csv.gz')

Класс tf.data.experimental.CsvDataset можно использовать для чтения записей csv непосредственно из gzip-файла без промежуточного шага распаковки.

III. Используйте tfds (tensorflow_dataset)

Возможно, такой подход отражает желание Google включить все наборы данных в Google. 😱

Этот метод требует еще одного импорта.

import tensorflow_datasets as tfds

  1. Учебники › Основы машинного обучения с Keras › Классификация текста с TF Hub

Набор данных IMDB доступен в обзорах IMDB или в наборах данных TensorFlow. Следующий код загружает набор данных IMDB на ваш компьютер (или в среду выполнения colab):

# Tutorials > ML basics with Keras > Text classifiation with TF Hub
# Split the training set into 60% and 40%, so we'll end up with 15,000 examples
# for training, 10,000 examples for validation and 25,000 examples for testing.
train_data, validation_data, test_data = tfds.load(
    name="imdb_reviews", 
    split=('train[:60%]', 'train[60%:]', 'test'),
    as_supervised=True)

IV. Если вы не знаете, что я сделал до сих пор