День сообщества ML - 9 ноября! Присоединяйтесь к нам для обновления от TensorFlow, JAX, и многое другое Подробнее

Классификация изображений с помощью TensorFlow Lite Model Maker

Посмотреть на TensorFlow.org Запустить в Google Colab Посмотреть исходный код на GitHub Скачать блокнот См. Модель TF Hub

Библиотека Maker TensorFlow Lite модель упрощает процесс адаптации и преобразования модели нейронной сети TensorFlow в частности входных данных при развертывании модели на устройстве приложений ML.

В этой записной книжке показан сквозной пример, в котором используется эта библиотека Model Maker, чтобы проиллюстрировать адаптацию и преобразование широко используемой модели классификации изображений для классификации цветов на мобильном устройстве.

Предпосылки

Чтобы запустить этот пример, мы в первую очередь необходимо установить несколько необходимых пакетов, включая Model Maker пакет , который в GitHub Repo .

pip install -q tflite-model-maker

Импортируйте необходимые пакеты.

import os

import numpy as np

import tensorflow as tf
assert tf.__version__.startswith('2')

from tflite_model_maker import model_spec
from tflite_model_maker import image_classifier
from tflite_model_maker.config import ExportFormat
from tflite_model_maker.config import QuantizationConfig
from tflite_model_maker.image_classifier import DataLoader

import matplotlib.pyplot as plt
/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/numba/core/errors.py:168: UserWarning: Insufficiently recent colorama version found. Numba requires colorama >= 0.3.9
  warnings.warn(msg)

Простой сквозной пример

Получить путь к данным

Давайте поиграем с изображениями на этом простом сквозном примере. Сотни изображений - хорошее начало для Model Maker, в то время как большее количество данных может обеспечить более высокую точность.

Downloading data from https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz
228818944/228813984 [==============================] - 7s 0us/step
228827136/228813984 [==============================] - 7s 0us/step

Вы можете заменить image_path своей папкой изображений. Что касается загрузки данных в colab, вы можете найти кнопку загрузки на левой боковой панели, показанной на изображении ниже с красным прямоугольником. Просто попробуйте загрузить zip-файл и разархивировать его. Путь к корневому файлу - это текущий путь.

Загрузить файл

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

Запустите пример

Пример состоит только из 4 строк кода, как показано ниже, каждая из которых представляет один шаг всего процесса.

Шаг 1. Загрузите входные данные, относящиеся к приложению машинного обучения на устройстве. Разделите его на данные обучения и данные тестирования.

data = DataLoader.from_folder(image_path)
train_data, test_data = data.split(0.9)
INFO:tensorflow:Load image with size: 3670, num_label: 5, labels: daisy, dandelion, roses, sunflowers, tulips.

Шаг 2. Настройте модель TensorFlow.

model = image_classifier.create(train_data)
INFO:tensorflow:Retraining the models...
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
hub_keras_layer_v1v2 (HubKer (None, 1280)              3413024   
_________________________________________________________________
dropout (Dropout)            (None, 1280)              0         
_________________________________________________________________
dense (Dense)                (None, 5)                 6405      
=================================================================
Total params: 3,419,429
Trainable params: 6,405
Non-trainable params: 3,413,024
_________________________________________________________________
None
Epoch 1/5
/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/keras/optimizer_v2/optimizer_v2.py:356: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead.
  "The `lr` argument is deprecated, use `learning_rate` instead.")
103/103 [==============================] - 15s 41ms/step - loss: 0.8537 - accuracy: 0.7758
Epoch 2/5
103/103 [==============================] - 4s 40ms/step - loss: 0.6526 - accuracy: 0.9017
Epoch 3/5
103/103 [==============================] - 4s 40ms/step - loss: 0.6186 - accuracy: 0.9157
Epoch 4/5
103/103 [==============================] - 4s 43ms/step - loss: 0.6042 - accuracy: 0.9260
Epoch 5/5
103/103 [==============================] - 4s 44ms/step - loss: 0.5883 - accuracy: 0.9384

Шаг 3. Оцените модель.

loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 2s 46ms/step - loss: 0.6109 - accuracy: 0.9183

Шаг 4. Экспорт в модель TensorFlow Lite.

Здесь мы экспортируем модель TensorFlow Lite с метаданными , которая обеспечивает стандарт для описания модели. Файл метки встроен в метаданные. Методика квантования после обучения по умолчанию - это полное целочисленное квантование для задачи классификации изображений.

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

model.export(export_dir='.')
2021-10-07 11:21:22.967160: W tensorflow/python/util/util.cc:348] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.
INFO:tensorflow:Assets written to: /tmp/tmpy7455_b6/assets
INFO:tensorflow:Assets written to: /tmp/tmpy7455_b6/assets
2021-10-07 11:21:27.181698: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:351] Ignored output_format.
2021-10-07 11:21:27.181754: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:354] Ignored drop_control_dependency.
fully_quantize: 0, inference_type: 6, input_inference_type: 3, output_inference_type: 3
WARNING:absl:For model inputs containing unsupported operations which cannot be quantized, the `inference_input_type` attribute will default to the original type.
INFO:tensorflow:Label file is inside the TFLite model with metadata.
INFO:tensorflow:Label file is inside the TFLite model with metadata.
INFO:tensorflow:Saving labels in /tmp/tmphe977fg7/labels.txt
INFO:tensorflow:Saving labels in /tmp/tmphe977fg7/labels.txt
INFO:tensorflow:TensorFlow Lite model exported successfully: ./model.tflite
INFO:tensorflow:TensorFlow Lite model exported successfully: ./model.tflite

После этих простых шагов 4, мы могли бы еще использовать TensorFlow Lite модель файл на устройстве приложений , как в изображении классификации эталонного приложении.

Подробный процесс

В настоящее время мы поддерживаем несколько моделей, таких как модели EfficientNet-Lite *, MobileNetV2, ResNet50 в качестве предварительно обученных моделей для классификации изображений. Но можно очень гибко добавлять в эту библиотеку новые предварительно обученные модели с помощью всего нескольких строк кода.

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

Шаг 1. Загрузите входные данные, относящиеся к приложению ML на устройстве

Набор данных о цветах содержит 3670 изображений, относящихся к 5 классам. Загрузите архивную версию набора данных и распакуйте ее.

Набор данных имеет следующую структуру каталогов:

flower_photos
|__ daisy
    |______ 100080576_f52e8ee070_n.jpg
    |______ 14167534527_781ceb1b7a_n.jpg
    |______ ...
|__ dandelion
    |______ 10043234166_e6dd915111_n.jpg
    |______ 1426682852_e62169221f_m.jpg
    |______ ...
|__ roses
    |______ 102501987_3cdb8e5394_n.jpg
    |______ 14982802401_a3dfb22afb.jpg
    |______ ...
|__ sunflowers
    |______ 12471791574_bb1be83df4.jpg
    |______ 15122112402_cafa41934f.jpg
    |______ ...
|__ tulips
    |______ 13976522214_ccec508fe7.jpg
    |______ 14487943607_651e8062a1_m.jpg
    |______ ...
image_path = tf.keras.utils.get_file(
      'flower_photos.tgz',
      'https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz',
      extract=True)
image_path = os.path.join(os.path.dirname(image_path), 'flower_photos')

Используйте DataLoader класс загрузки данных.

Что касается from_folder() метод, он может загружать данные из папки. Предполагается, что данные изображения одного и того же класса находятся в одном подкаталоге, а имя подкаталога является именем класса. В настоящее время поддерживаются изображения в кодировке JPEG и изображения в формате PNG.

data = DataLoader.from_folder(image_path)
INFO:tensorflow:Load image with size: 3670, num_label: 5, labels: daisy, dandelion, roses, sunflowers, tulips.
INFO:tensorflow:Load image with size: 3670, num_label: 5, labels: daisy, dandelion, roses, sunflowers, tulips.

Разделите его на данные обучения (80%), данные проверки (10%, необязательно) и данные тестирования (10%).

train_data, rest_data = data.split(0.8)
validation_data, test_data = rest_data.split(0.5)

Покажите 25 примеров изображений с этикетками.

plt.figure(figsize=(10,10))
for i, (image, label) in enumerate(data.gen_dataset().unbatch().take(25)):
  plt.subplot(5,5,i+1)
  plt.xticks([])
  plt.yticks([])
  plt.grid(False)
  plt.imshow(image.numpy(), cmap=plt.cm.gray)
  plt.xlabel(data.index_to_label[label.numpy()])
plt.show()

PNG

Шаг 2: Настройте модель TensorFlow

Создайте собственную модель классификатора изображений на основе загруженных данных. Модель по умолчанию - EfficientNet-Lite0.

model = image_classifier.create(train_data, validation_data=validation_data)
INFO:tensorflow:Retraining the models...
INFO:tensorflow:Retraining the models...
Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
hub_keras_layer_v1v2_1 (HubK (None, 1280)              3413024   
_________________________________________________________________
dropout_1 (Dropout)          (None, 1280)              0         
_________________________________________________________________
dense_1 (Dense)              (None, 5)                 6405      
=================================================================
Total params: 3,419,429
Trainable params: 6,405
Non-trainable params: 3,413,024
_________________________________________________________________
None
Epoch 1/5
/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/keras/optimizer_v2/optimizer_v2.py:356: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead.
  "The `lr` argument is deprecated, use `learning_rate` instead.")
91/91 [==============================] - 7s 61ms/step - loss: 0.8813 - accuracy: 0.7606 - val_loss: 0.7030 - val_accuracy: 0.8466
Epoch 2/5
91/91 [==============================] - 5s 56ms/step - loss: 0.6571 - accuracy: 0.8932 - val_loss: 0.6569 - val_accuracy: 0.8665
Epoch 3/5
91/91 [==============================] - 5s 56ms/step - loss: 0.6220 - accuracy: 0.9166 - val_loss: 0.6361 - val_accuracy: 0.8807
Epoch 4/5
91/91 [==============================] - 5s 56ms/step - loss: 0.6035 - accuracy: 0.9203 - val_loss: 0.6276 - val_accuracy: 0.8977
Epoch 5/5
91/91 [==============================] - 5s 60ms/step - loss: 0.5924 - accuracy: 0.9238 - val_loss: 0.6209 - val_accuracy: 0.9034

Взгляните на подробную структуру модели.

model.summary()
Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
hub_keras_layer_v1v2_1 (HubK (None, 1280)              3413024   
_________________________________________________________________
dropout_1 (Dropout)          (None, 1280)              0         
_________________________________________________________________
dense_1 (Dense)              (None, 5)                 6405      
=================================================================
Total params: 3,419,429
Trainable params: 6,405
Non-trainable params: 3,413,024
_________________________________________________________________

Шаг 3. Оцените индивидуальную модель

Оцените результат модели, получите потерю и точность модели.

loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 1s 33ms/step - loss: 0.6063 - accuracy: 0.9264

Мы могли отобразить предсказанные результаты на 100 тестовых изображениях. Прогнозируемые метки красного цвета - это неверные предсказанные результаты, в то время как другие верны.

# A helper function that returns 'red'/'black' depending on if its two input
# parameter matches or not.
def get_label_color(val1, val2):
  if val1 == val2:
    return 'black'
  else:
    return 'red'

# Then plot 100 test images and their predicted labels.
# If a prediction result is different from the label provided label in "test"
# dataset, we will highlight it in red color.
plt.figure(figsize=(20, 20))
predicts = model.predict_top_k(test_data)
for i, (image, label) in enumerate(test_data.gen_dataset().unbatch().take(100)):
  ax = plt.subplot(10, 10, i+1)
  plt.xticks([])
  plt.yticks([])
  plt.grid(False)
  plt.imshow(image.numpy(), cmap=plt.cm.gray)

  predict_label = predicts[i][0][0]
  color = get_label_color(predict_label,
                          test_data.index_to_label[label.numpy()])
  ax.xaxis.label.set_color(color)
  plt.xlabel('Predicted: %s' % predict_label)
plt.show()

PNG

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

Шаг 4: Экспорт в модель TensorFlow Lite

Преобразование обученной модели в формате модели TensorFlow Lite с метаданными , так что вы можете позже использовать в качестве на устройстве приложения ML. Файл метки и файл словаря встроены в метаданные. TFLite по умолчанию имя файла model.tflite .

Во многих приложениях машинного обучения на устройстве размер модели является важным фактором. Поэтому рекомендуется применить квантование модели, чтобы сделать ее меньше и потенциально быстрее. Методика квантования после обучения по умолчанию - это полное целочисленное квантование для задачи классификации изображений.

model.export(export_dir='.')
INFO:tensorflow:Assets written to: /tmp/tmppd3d0kzx/assets
INFO:tensorflow:Assets written to: /tmp/tmppd3d0kzx/assets
2021-10-07 11:23:05.474529: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:351] Ignored output_format.
2021-10-07 11:23:05.474585: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:354] Ignored drop_control_dependency.
fully_quantize: 0, inference_type: 6, input_inference_type: 3, output_inference_type: 3
WARNING:absl:For model inputs containing unsupported operations which cannot be quantized, the `inference_input_type` attribute will default to the original type.
INFO:tensorflow:Label file is inside the TFLite model with metadata.
INFO:tensorflow:Label file is inside the TFLite model with metadata.
INFO:tensorflow:Saving labels in /tmp/tmprcnjkuck/labels.txt
INFO:tensorflow:Saving labels in /tmp/tmprcnjkuck/labels.txt
INFO:tensorflow:TensorFlow Lite model exported successfully: ./model.tflite
INFO:tensorflow:TensorFlow Lite model exported successfully: ./model.tflite

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

Эта модель может быть интегрирована в Android или приложение IOS , используя ImageClassifier API из TensorFlow Lite задач библиотеки .

Допустимые форматы экспорта могут быть одним или списком из следующих:

По умолчанию он просто экспортирует модель TensorFlow Lite с метаданными. Вы также можете выборочно экспортировать разные файлы. Например, экспорт только файла этикетки следующим образом:

model.export(export_dir='.', export_format=ExportFormat.LABEL)
INFO:tensorflow:Saving labels in ./labels.txt
INFO:tensorflow:Saving labels in ./labels.txt

Вы также можете оценить модель tflite с evaluate_tflite методом.

model.evaluate_tflite('model.tflite', test_data)
{'accuracy': 0.9237057220708447}

Расширенное использование

create функции является важной частью этой библиотеки. Он использует обучение передачи с pretrained модель похожа на учебник .

create функцию содержит следующие шаги:

  1. Разделение данных на обучение, проверку, тестирование данных в соответствии с параметром validation_ratio и test_ratio . Значение по умолчанию validation_ratio и test_ratio являются 0.1 и 0.1 .
  2. Скачать изображение вектор характеристик в качестве базовой модели из TensorFlow Hub. Предварительно обученная модель по умолчанию - EfficientNet-Lite0.
  3. Добавить классификатор голову слоя Dropout с dropout_rate между головным слоем и предварительно обученной модели. По умолчанию dropout_rate по умолчанию dropout_rate значение из make_image_classifier_lib на TensorFlow Hub.
  4. Предварительно обработайте необработанные входные данные. В настоящее время этапы предварительной обработки включают в себя нормализацию значения каждого пикселя изображения для моделирования входного масштаба и изменение его размера в соответствии с входным размером модели. EfficientNet-Lite0 имеет входную шкалу [0, 1] и размер входного изображения [224, 224, 3] .
  5. Загрузите данные в модель классификатора. По умолчанию параметров подготовки , такие как эпохи, размер партии, скорость обучения, импульс значения по умолчанию из make_image_classifier_lib по TensorFlow Hub. Обучается только руководитель классификатора.

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

Настроить квантование после обучения на модели TensorFLow Lite

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

Библиотека Model Maker применяет стандартную технику квантования после обучения при экспорте модели. Если вы хотите настроить пост-тренировочное квантование, Model Maker поддерживает несколько вариантов после обучения с использованием квантования QuantizationConfig , а также. Возьмем для примера квантование float16. Сначала определите конфигурацию квантования.

config = QuantizationConfig.for_float16()

Затем мы экспортируем модель TensorFlow Lite с такой конфигурацией.

model.export(export_dir='.', tflite_filename='model_fp16.tflite', quantization_config=config)
INFO:tensorflow:Assets written to: /tmp/tmp7w0gbx_6/assets
INFO:tensorflow:Assets written to: /tmp/tmp7w0gbx_6/assets
INFO:tensorflow:Label file is inside the TFLite model with metadata.
2021-10-07 11:31:38.644997: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:351] Ignored output_format.
2021-10-07 11:31:38.645053: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:354] Ignored drop_control_dependency.
INFO:tensorflow:Label file is inside the TFLite model with metadata.
INFO:tensorflow:Saving labels in /tmp/tmpxr305vmd/labels.txt
INFO:tensorflow:Saving labels in /tmp/tmpxr305vmd/labels.txt
INFO:tensorflow:TensorFlow Lite model exported successfully: ./model_fp16.tflite
INFO:tensorflow:TensorFlow Lite model exported successfully: ./model_fp16.tflite

В Colab, вы можете скачать модель под названием model_fp16.tflite из левой боковой панели, так же , как загрузка часть упомянутой выше.

Сменить модель

Измените модель, которая поддерживается в этой библиотеке.

Эта библиотека уже поддерживает модели EfficientNet-Lite, MobileNetV2, ResNet50. EfficientNet-Lite представляет собой семейство моделей классификации изображений , которые могли бы достичь состояния дел в области точности и подходят для устройств Edge. Модель по умолчанию - EfficientNet-Lite0.

Мы могли бы перейти к модели MobileNetV2, просто установив параметр model_spec в спецификации модели MobileNetV2 в create метода.

model = image_classifier.create(train_data, model_spec=model_spec.get('mobilenet_v2'), validation_data=validation_data)
INFO:tensorflow:Retraining the models...
INFO:tensorflow:Retraining the models...
Model: "sequential_2"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
hub_keras_layer_v1v2_2 (HubK (None, 1280)              2257984   
_________________________________________________________________
dropout_2 (Dropout)          (None, 1280)              0         
_________________________________________________________________
dense_2 (Dense)              (None, 5)                 6405      
=================================================================
Total params: 2,264,389
Trainable params: 6,405
Non-trainable params: 2,257,984
_________________________________________________________________
None
Epoch 1/5
/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/keras/optimizer_v2/optimizer_v2.py:356: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead.
  "The `lr` argument is deprecated, use `learning_rate` instead.")
91/91 [==============================] - 9s 61ms/step - loss: 0.9338 - accuracy: 0.7517 - val_loss: 0.7494 - val_accuracy: 0.8466
Epoch 2/5
91/91 [==============================] - 5s 56ms/step - loss: 0.6974 - accuracy: 0.8819 - val_loss: 0.6857 - val_accuracy: 0.8750
Epoch 3/5
91/91 [==============================] - 5s 60ms/step - loss: 0.6498 - accuracy: 0.9011 - val_loss: 0.6881 - val_accuracy: 0.8608
Epoch 4/5
91/91 [==============================] - 5s 56ms/step - loss: 0.6264 - accuracy: 0.9152 - val_loss: 0.6687 - val_accuracy: 0.8722
Epoch 5/5
91/91 [==============================] - 5s 59ms/step - loss: 0.6103 - accuracy: 0.9282 - val_loss: 0.6668 - val_accuracy: 0.8665

Оцените недавно переобученную модель MobileNetV2, чтобы увидеть точность и потерю данных тестирования.

loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 2s 40ms/step - loss: 0.6536 - accuracy: 0.9155

Измените модель в TensorFlow Hub

Более того, мы могли бы также переключиться на другие новые модели, которые вводят изображение и выводят вектор признаков в формате TensorFlow Hub.

Как Вводный V3 модели в качестве примера, мы можем определить inception_v3_spec , который является объектом image_classifier.ModelSpec и содержит спецификацию модели Вводный V3.

Нам необходимо указать название модели name , URL - адрес модельного TensorFlow Hub uri . В то же время, значение по умолчанию input_image_shape является [224, 224] . Нам нужно изменить его [299, 299] для модели Вводного V3.

inception_v3_spec = image_classifier.ModelSpec(
    uri='https://tfhub.dev/google/imagenet/inception_v3/feature_vector/1')
inception_v3_spec.input_image_shape = [299, 299]

Затем, с помощью установки параметра model_spec для inception_v3_spec в create метода, мы могли бы переквалифицироваться модель Вводный V3.

Остальные шаги точно такие же, и в конце мы могли бы получить индивидуальную модель InceptionV3 TensorFlow Lite.

Измените свою собственную модель

Если мы хотим использовать пользовательскую модель , которая не в TensorFlow Hub, мы должны создавать и экспортировать ModelSpec в TensorFlow Hub.

Затем начинают определять ModelSpec объект как процесс выше.

Измените гиперпараметры обучения

Мы могли бы также изменить учебные гиперпараметры как epochs , dropout_rate и batch_size , которые могут повлиять на точность модели. Вы можете настроить следующие параметры модели:

  • epochs : больше эпох могут достичь более высокой точности , пока не сходится , но обучение слишком много эпох может привести к переобучению.
  • dropout_rate : Скорость для отсева, во избежание переобучения. По умолчанию нет.
  • batch_size : количество образцов для использования в одном шаге обучения. По умолчанию нет.
  • validation_data данные валидации:. Если нет, пропускает процесс проверки. По умолчанию нет.
  • train_whole_model : Если это правда, то модуль концентратора обучается вместе с классификационным слоем сверху. В противном случае обучайте только верхний слой классификации. По умолчанию нет.
  • learning_rate : Базовый курс обучения. По умолчанию нет.
  • momentum : поплавок Python направлен оптимизатора. Используется только когда use_hub_library является True. По умолчанию нет.
  • shuffle : Boolean, следует ли перемешиваются данные. По умолчанию false.
  • use_augmentation : Boolean, увеличение использования данных для предварительной обработки. По умолчанию false.
  • use_hub_library : Boolean, использование make_image_classifier_lib от tensorflow ступицы переквалифицироваться модели. Этот обучающий конвейер может обеспечить лучшую производительность для сложных наборов данных со многими категориями. Верно по умолчанию.
  • warmup_steps : Количество шагов разминочных для графика прогрева на скорость обучения. Если None, то по умолчанию используются разминка, которая представляет собой общее количество тренировочных шагов за две эпохи. Используется только при use_hub_library ложен. По умолчанию нет.
  • model_dir : Необязательно, расположение модели контрольных файлов. Используется только при use_hub_library ложен. По умолчанию нет.

Параметры , которые не являются None по умолчанию , как epochs получат конкретные параметры по умолчанию в make_image_classifier_lib из библиотеки TensorFlow Hub или train_image_classifier_lib .

Например, мы могли бы тренироваться с большим количеством эпох.

model = image_classifier.create(train_data, validation_data=validation_data, epochs=10)
INFO:tensorflow:Retraining the models...
INFO:tensorflow:Retraining the models...
Model: "sequential_3"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
hub_keras_layer_v1v2_3 (HubK (None, 1280)              3413024   
_________________________________________________________________
dropout_3 (Dropout)          (None, 1280)              0         
_________________________________________________________________
dense_3 (Dense)              (None, 5)                 6405      
=================================================================
Total params: 3,419,429
Trainable params: 6,405
Non-trainable params: 3,413,024
_________________________________________________________________
None
Epoch 1/10
91/91 [==============================] - 7s 62ms/step - loss: 0.8914 - accuracy: 0.7562 - val_loss: 0.7192 - val_accuracy: 0.8381
Epoch 2/10
91/91 [==============================] - 5s 57ms/step - loss: 0.6686 - accuracy: 0.8887 - val_loss: 0.6765 - val_accuracy: 0.8580
Epoch 3/10
91/91 [==============================] - 5s 58ms/step - loss: 0.6296 - accuracy: 0.9131 - val_loss: 0.6447 - val_accuracy: 0.8864
Epoch 4/10
91/91 [==============================] - 5s 58ms/step - loss: 0.6067 - accuracy: 0.9262 - val_loss: 0.6348 - val_accuracy: 0.8864
Epoch 5/10
91/91 [==============================] - 6s 61ms/step - loss: 0.5898 - accuracy: 0.9327 - val_loss: 0.6265 - val_accuracy: 0.8920
Epoch 6/10
91/91 [==============================] - 5s 56ms/step - loss: 0.5775 - accuracy: 0.9440 - val_loss: 0.6247 - val_accuracy: 0.9034
Epoch 7/10
91/91 [==============================] - 5s 52ms/step - loss: 0.5704 - accuracy: 0.9454 - val_loss: 0.6227 - val_accuracy: 0.9091
Epoch 8/10
91/91 [==============================] - 5s 52ms/step - loss: 0.5668 - accuracy: 0.9451 - val_loss: 0.6208 - val_accuracy: 0.9062
Epoch 9/10
91/91 [==============================] - 5s 53ms/step - loss: 0.5570 - accuracy: 0.9526 - val_loss: 0.6193 - val_accuracy: 0.9091
Epoch 10/10
91/91 [==============================] - 5s 52ms/step - loss: 0.5534 - accuracy: 0.9560 - val_loss: 0.6172 - val_accuracy: 0.9062

Оцените недавно прошедшую переподготовку модель с 10 эпохами обучения.

loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 2s 34ms/step - loss: 0.6021 - accuracy: 0.9210

Подробнее

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