![]() | ![]() | ![]() | ![]() | ![]() |
TensorFlowライトモデルメーカーライブラリが適応とオンデバイスMLのアプリケーションのためにこのモデルを展開するときに、特定の入力データにTensorFlowニューラルネットワークモデルを変換するプロセスを単純化します。
このノートブックは、このModel Makerライブラリを利用して、モバイルデバイスで花を分類するために一般的に使用される画像分類モデルの適応と変換を説明するエンドツーエンドの例を示しています。
前提条件
この例を実行するには、我々のGitHubでそのモデルメーカーのパッケージを含むいくつかの必要なパッケージ、インストールしておく必要がありますレポ。
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/pkg_resources/__init__.py:119: PkgResourcesDeprecationWarning: 0.18ubuntu0.18.04.1 is an invalid version and will not be supported in a future release PkgResourcesDeprecationWarning, /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)
単純なエンドツーエンドの例
データパスを取得する
この単純なエンドツーエンドの例で再生するいくつかの画像を取得してみましょう。何百もの画像はモデルメーカーにとって良いスタートですが、より多くのデータがより良い精度を達成する可能性があります。
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')
Downloading data from https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz 228818944/228813984 [==============================] - 1s 0us/step 228827136/228813984 [==============================] - 1s 0us/step
あなたは置き換えることができimage_path
独自の画像フォルダに。 colabへのデータのアップロードについては、下の画像に赤い長方形で示されている左側のサイドバーにアップロードボタンがあります。 zipファイルをアップロードして解凍してみてください。ルートファイルパスは現在のパスです。
あなたはクラウドにあなたのイメージをアップロードしたくない場合は、次のローカルライブラリを実行しようとすることができ、ガイドGitHubのインチ
例を実行する
この例は、以下に示すように4行のコードで構成されており、各行はプロセス全体の1つのステップを表しています。
手順1.デバイス上のMLアプリに固有の入力データを読み込みます。トレーニングデータとテストデータに分割します。
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 [==============================] - 7s 35ms/step - loss: 0.8551 - accuracy: 0.7718 Epoch 2/5 103/103 [==============================] - 4s 35ms/step - loss: 0.6503 - accuracy: 0.8956 Epoch 3/5 103/103 [==============================] - 4s 34ms/step - loss: 0.6157 - accuracy: 0.9196 Epoch 4/5 103/103 [==============================] - 3s 33ms/step - loss: 0.6036 - accuracy: 0.9293 Epoch 5/5 103/103 [==============================] - 4s 34ms/step - loss: 0.5929 - accuracy: 0.9317
ステップ3.モデルを評価します。
loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 2s 40ms/step - loss: 0.6282 - accuracy: 0.9019
ステップ4.TensorFlowLiteモデルにエクスポートします。
ここでは、とのTensorFlow Liteのモデルエクスポートするメタデータモデルの記述のための標準を提供します。ラベルファイルはメタデータに埋め込まれています。デフォルトのトレーニング後の量子化手法は、画像分類タスクの完全整数量子化です。
アップロード部分と同じ左側のサイドバーにダウンロードして、自分で使用することができます。
model.export(export_dir='.')
2021-11-02 11:34:05.568024: 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/tmpkqikzotp/assets INFO:tensorflow:Assets written to: /tmp/tmpkqikzotp/assets 2021-11-02 11:34:09.488041: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:351] Ignored output_format. 2021-11-02 11:34:09.488090: 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/tmpoblx4ed5/labels.txt INFO:tensorflow:Saving labels in /tmp/tmpoblx4ed5/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アプリに固有の入力データを読み込む
花のデータセットには、5つのクラスに属する3670枚の画像が含まれています。データセットのアーカイブバージョンをダウンロードして、解凍します。
データセットのディレクトリ構造は次のとおりです。
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()
ステップ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 [==============================] - 6s 54ms/step - loss: 0.8689 - accuracy: 0.7655 - val_loss: 0.6941 - val_accuracy: 0.8835 Epoch 2/5 91/91 [==============================] - 5s 50ms/step - loss: 0.6596 - accuracy: 0.8949 - val_loss: 0.6668 - val_accuracy: 0.8807 Epoch 3/5 91/91 [==============================] - 5s 50ms/step - loss: 0.6188 - accuracy: 0.9159 - val_loss: 0.6537 - val_accuracy: 0.8807 Epoch 4/5 91/91 [==============================] - 5s 52ms/step - loss: 0.6050 - accuracy: 0.9210 - val_loss: 0.6432 - val_accuracy: 0.8892 Epoch 5/5 91/91 [==============================] - 5s 52ms/step - loss: 0.5898 - accuracy: 0.9348 - val_loss: 0.6348 - val_accuracy: 0.8864
詳細なモデル構造をご覧ください。
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 27ms/step - loss: 0.6324 - accuracy: 0.8965
予測結果を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()
精度はアプリの要件を満たしていない場合、1はを参照してください可能性が高度な使用方法などの再訓練パラメータを調整することは、そのような大規模モデルへの変更などの代替案を検討します
ステップ4:TensorFlowLiteモデルにエクスポートする
訓練されたモデルが持つTensorFlow Liteのモデル形式に変換するメタデータ後でオンデバイスMLアプリケーションで使用できるようにします。ラベルファイルと語彙ファイルはメタデータに埋め込まれています。デフォルトTFLiteのファイル名ですmodel.tflite
。
多くのオンデバイスMLアプリケーションでは、モデルサイズが重要な要素です。したがって、モデルを小さくして実行速度を上げるために、クオンタイズを適用することをお勧めします。デフォルトのトレーニング後の量子化手法は、画像分類タスクの完全整数量子化です。
model.export(export_dir='.')
INFO:tensorflow:Assets written to: /tmp/tmp6tt5g8de/assets INFO:tensorflow:Assets written to: /tmp/tmp6tt5g8de/assets 2021-11-02 11:35:40.254046: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:351] Ignored output_format. 2021-11-02 11:35:40.254099: 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/tmpf601xty1/labels.txt INFO:tensorflow:Saving labels in /tmp/tmpf601xty1/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のタスク・ライブラリーを。
許可されるエクスポート形式は、次の1つまたはリストのいずれかです。
デフォルトでは、メタデータを使用してTensorFlowLiteモデルをエクスポートするだけです。異なるファイルを選択的にエクスポートすることもできます。たとえば、次のようにラベルファイルのみをエクスポートします。
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.9019073569482289}
高度な使用法
create
機能は、このライブラリの重要な部分です。それは次のようにpretrainedモデルと転移学習を使用していますチュートリアル。
create
機能には、以下の手順が含まれています。
- パラメータに応じてデータをテスト、トレーニング、検証にデータを分割
validation_ratio
とtest_ratio
。デフォルトの値validation_ratio
とtest_ratio
ある0.1
と0.1
。 - ダウンロード画像特徴ベクトルをTensorFlowハブからのベースモデルとして。デフォルトの事前トレーニング済みモデルはEfficientNet-Lite0です。
- ドロップアウト層を有する分類器ヘッドを追加
dropout_rate
ヘッド層との事前訓練を受けたモデルの間。デフォルトのdropout_rate
デフォルトですdropout_rate
から値make_image_classifier_lib TensorFlowハブによって。 - 生の入力データを前処理します。現在、各画像ピクセルの値をモデル入力スケールに正規化し、モデル入力サイズにサイズ変更するなどの前処理ステップ。 EfficientNet-Lite0は、入力スケール有する
[0, 1]
と入力画像サイズ[224, 224, 3]
- データを分類器モデルにフィードします。デフォルトでは、そのようなトレーニングエポック、バッチサイズなどの訓練パラメータは、速度の学習、勢いはからの既定値ですmake_image_classifier_lib TensorFlowハブによって。分類器のヘッドのみがトレーニングされます。
このセクションでは、別の画像分類モデルへの切り替え、トレーニングハイパーパラメータの変更など、いくつかの高度なトピックについて説明します。
TensorFLowLiteモデルでトレーニング後の量子化をカスタマイズする
訓練後の量子化はまた、CPUとハードウェアアクセラレータ推論速度を向上させながら、モデル精度の劣化の少ない、モデルサイズと推論待ち時間を低減することができる変換技術です。したがって、モデルを最適化するために広く使用されています。
モデルメーカーライブラリは、モデルをエクスポートするときに、デフォルトのトレーニング後の量子化手法を適用します。あなたは訓練後の量子化をカスタマイズしたい場合は、モデルのメーカーが使用して複数の訓練後の量子化オプションをサポートQuantizationConfigをうまくように。たとえば、float16量子化を取り上げましょう。まず、量子化構成を定義します。
config = QuantizationConfig.for_float16()
次に、そのような構成でTensorFlowLiteモデルをエクスポートします。
model.export(export_dir='.', tflite_filename='model_fp16.tflite', quantization_config=config)
INFO:tensorflow:Assets written to: /tmp/tmpa528qeqj/assets INFO:tensorflow:Assets written to: /tmp/tmpa528qeqj/assets INFO:tensorflow:Label file is inside the TFLite model with metadata. 2021-11-02 11:43:43.724165: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:351] Ignored output_format. 2021-11-02 11:43:43.724219: 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/tmpvlx_qa4j/labels.txt INFO:tensorflow:Saving labels in /tmp/tmpvlx_qa4j/labels.txt INFO:tensorflow:TensorFlow Lite model exported successfully: ./model_fp16.tflite INFO:tensorflow:TensorFlow Lite model exported successfully: ./model_fp16.tflite
コラボでは、名前付きモデルダウンロードすることができmodel_fp16.tflite
上記のアップロード部分と同じ左のサイドバーからは、。
モデルを変更する
このライブラリでサポートされているモデルに変更します。
このライブラリは、現在、EfficientNet-Liteモデル、MobileNetV2、ResNet50をサポートしています。 EfficientNet-Liteの最先端の精度とエッジデバイスに適しを達成できる画像分類モデルのファミリーです。デフォルトのモデルは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 [==============================] - 8s 53ms/step - loss: 0.9163 - accuracy: 0.7634 - val_loss: 0.7789 - val_accuracy: 0.8267 Epoch 2/5 91/91 [==============================] - 4s 50ms/step - loss: 0.6836 - accuracy: 0.8822 - val_loss: 0.7223 - val_accuracy: 0.8551 Epoch 3/5 91/91 [==============================] - 4s 50ms/step - loss: 0.6506 - accuracy: 0.9045 - val_loss: 0.7086 - val_accuracy: 0.8580 Epoch 4/5 91/91 [==============================] - 5s 50ms/step - loss: 0.6218 - accuracy: 0.9227 - val_loss: 0.7049 - val_accuracy: 0.8636 Epoch 5/5 91/91 [==============================] - 5s 52ms/step - loss: 0.6092 - accuracy: 0.9279 - val_loss: 0.7181 - val_accuracy: 0.8580
新しく再トレーニングされたMobileNetV2モデルを評価して、テストデータの精度と損失を確認します。
loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 2s 35ms/step - loss: 0.6866 - accuracy: 0.8747
TensorFlowハブのモデルに変更します
さらに、画像を入力し、TensorFlowHub形式で特徴ベクトルを出力する他の新しいモデルに切り替えることもできます。
インセプションV3の一例としてのモデル、我々は定義することができinception_v3_spec
の目的であるimage_classifier.ModelSpecとインセプションV3モデルの仕様を含んでいます。
私たちは、モデル名を指定する必要がname
、TensorFlowハブモデルのURL 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 TensorFlowLiteモデルを取得できます。
独自のカスタムモデルを変更する
我々はTensorFlowハブにないカスタムモデルを使用したい場合は、我々は作成してエクスポートする必要がありModelSpecをTensorFlowハブに。
次に定義する開始ModelSpec
上記のプロセスと同様の目的を。
トレーニングハイパーパラメータを変更する
我々はまた、のようなトレーニングハイパー変更される可能性がありepochs
、 dropout_rate
とbatch_size
モデルの精度に影響を与える可能性があります。調整できるモデルパラメータは次のとおりです。
-
epochs
:それは収束するが、あまりにも多くのエポックのための訓練は、過剰適合につながる可能性まで、より多くのエポックは、より高い精度を達成することができました。 -
dropout_rate
:ドロップアウト率、回避の過剰適合。デフォルトではなし。 -
batch_size
:1つのトレーニング段階で使用するサンプルの数。デフォルトではなし。 -
validation_data
:検証データ。 Noneの場合、検証プロセスをスキップします。デフォルトではなし。 -
train_whole_model
:trueの場合、ハブモジュールは、トップ上の分類層と一緒に訓練を受けています。それ以外の場合は、最上位の分類レイヤーのみをトレーニングします。デフォルトではなし。 -
learning_rate
:基本学習率。デフォルトではなし。 -
momentum
:オプティマイザに転送Pythonのフロート。場合にのみ使用use_hub_library
真です。デフォルトではなし。 -
shuffle
:ブールを、データをシャッフルする必要があるかどうか。デフォルトではFalse。 -
use_augmentation
:ブール、前処理のためのデータの増強を使用しています。デフォルトではFalse。 -
use_hub_library
:ブール、使用make_image_classifier_lib
tensorflowハブからは、モデルを再教育します。このトレーニングパイプラインは、多くのカテゴリを持つ複雑なデータセットのパフォーマンスを向上させる可能性があります。デフォルトではTrue。 -
warmup_steps
:率を学習上のウォームアップスケジュールのためのウォームアップステップ数。 Noneの場合、デフォルトのwarmup_stepsが使用されます。これは、2つのエポックの合計トレーニングステップです。場合にのみ使用use_hub_library
Falseです。デフォルトではなし。 -
model_dir
:オプション、モデルのチェックポイントファイルの場所。場合にのみ使用use_hub_library
Falseです。デフォルトではなし。
以下のように、デフォルトではNoneですパラメータepochs
での具体的なデフォルトパラメータを取得しますmake_image_classifier_lib TensorFlowハブライブラリやから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 [==============================] - 6s 53ms/step - loss: 0.8735 - accuracy: 0.7644 - val_loss: 0.6701 - val_accuracy: 0.8892 Epoch 2/10 91/91 [==============================] - 4s 49ms/step - loss: 0.6502 - accuracy: 0.8984 - val_loss: 0.6442 - val_accuracy: 0.8864 Epoch 3/10 91/91 [==============================] - 4s 49ms/step - loss: 0.6215 - accuracy: 0.9107 - val_loss: 0.6306 - val_accuracy: 0.8920 Epoch 4/10 91/91 [==============================] - 4s 49ms/step - loss: 0.5962 - accuracy: 0.9299 - val_loss: 0.6253 - val_accuracy: 0.8977 Epoch 5/10 91/91 [==============================] - 5s 52ms/step - loss: 0.5845 - accuracy: 0.9334 - val_loss: 0.6206 - val_accuracy: 0.9062 Epoch 6/10 91/91 [==============================] - 5s 50ms/step - loss: 0.5743 - accuracy: 0.9451 - val_loss: 0.6159 - val_accuracy: 0.9062 Epoch 7/10 91/91 [==============================] - 4s 48ms/step - loss: 0.5682 - accuracy: 0.9444 - val_loss: 0.6192 - val_accuracy: 0.9006 Epoch 8/10 91/91 [==============================] - 4s 49ms/step - loss: 0.5595 - accuracy: 0.9557 - val_loss: 0.6153 - val_accuracy: 0.9091 Epoch 9/10 91/91 [==============================] - 4s 47ms/step - loss: 0.5560 - accuracy: 0.9523 - val_loss: 0.6213 - val_accuracy: 0.9062 Epoch 10/10 91/91 [==============================] - 4s 45ms/step - loss: 0.5520 - accuracy: 0.9595 - val_loss: 0.6220 - val_accuracy: 0.8977
10のトレーニングエポックで新しく再トレーニングされたモデルを評価します。
loss, accuracy = model.evaluate(test_data)
12/12 [==============================] - 1s 27ms/step - loss: 0.6417 - accuracy: 0.8883
続きを読む
あなたは私たちの読むことができる画像分類技術的な詳細を学ぶために例を。詳細については、以下を参照してください。