Mengekspor model dalam format TF1 Hub

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Anda dapat membaca lebih lanjut tentang format ini dalam format TF1 Hub

Catatan kompatibilitas

Format TF1 Hub ditujukan untuk TensorFlow 1. Ini hanya didukung sebagian oleh TF Hub di TensorFlow 2. Harap pertimbangkan untuk memublikasikan dalam format TF2 SavedModel baru dengan mengikuti panduan Mengekspor model .

Format TF1 Hub mirip dengan format SavedModel dari TensorFlow 1 pada tingkat sintaksis (nama file dan pesan protokol yang sama) tetapi secara semantik berbeda untuk memungkinkan penggunaan kembali modul, komposisi, dan pelatihan ulang (mis., penyimpanan penginisialisasi sumber daya yang berbeda, penandaan yang berbeda konvensi untuk metagraf). Cara termudah untuk membedakannya di disk adalah ada atau tidaknya file tfhub_module.pb .

Pendekatan umum

Untuk mendefinisikan modul baru, penerbit memanggil hub.create_module_spec() dengan fungsi module_fn . Fungsi ini membuat grafik yang mewakili struktur internal modul, menggunakan tf.placeholder() untuk input yang akan diberikan oleh pemanggil. Kemudian ia mendefinisikan tanda tangan dengan memanggil hub.add_signature(name, inputs, outputs) satu kali atau lebih.

Sebagai contoh:

def module_fn():
  inputs = tf.placeholder(dtype=tf.float32, shape=[None, 50])
  layer1 = tf.layers.dense(inputs, 200)
  layer2 = tf.layers.dense(layer1, 100)
  outputs = dict(default=layer2, hidden_activations=layer1)
  # Add default signature.
  hub.add_signature(inputs=inputs, outputs=outputs)

...
spec = hub.create_module_spec(module_fn)

Hasil dari hub.create_module_spec() dapat digunakan, sebagai ganti jalur, untuk membuat instance objek modul dalam grafik TensorFlow tertentu. Dalam kasus seperti itu, tidak ada pos pemeriksaan, dan instance modul akan menggunakan inisialisasi variabel sebagai gantinya.

Setiap instance modul dapat diserialisasi ke disk melalui metode export(path, session) . Mengekspor modul membuat serial definisinya bersama dengan status variabelnya saat ini dalam session ke jalur yang dilewati. Ini dapat digunakan saat mengekspor modul untuk pertama kalinya, serta saat mengekspor modul yang disesuaikan.

Untuk kompatibilitas dengan Penaksir TensorFlow, hub.LatestModuleExporter mengekspor modul dari pos pemeriksaan terbaru, sama seperti tf.estimator.LatestExporter mengekspor seluruh model dari pos pemeriksaan terbaru.

Penerbit modul harus menerapkan tanda tangan umum jika memungkinkan, sehingga konsumen dapat dengan mudah bertukar modul dan menemukan yang terbaik untuk masalah mereka.

Contoh nyata

Lihatlah eksportir modul penyematan teks kami untuk contoh dunia nyata tentang cara membuat modul dari format penyematan teks umum.

Saran untuk Penerbit

Untuk memudahkan penyesuaian bagi konsumen, harap perhatikan hal-hal berikut:

  • Fine-tuning membutuhkan regularisasi. Modul Anda diekspor dengan koleksi REGULARIZATION_LOSSES , yang menempatkan pilihan Anda dari tf.layers.dense(..., kernel_regularizer=...) dll. ke dalam apa yang didapat konsumen dari tf.losses.get_regularization_losses() . Lebih suka cara mendefinisikan kerugian regularisasi L1/L2 ini.

  • Dalam model penayang, hindari mendefinisikan regularisasi L1/L2 melalui parameter l1_ dan l2_regularization_strength dari tf.train.FtrlOptimizer , tf.train.ProximalGradientDescentOptimizer , dan pengoptimal proksimal lainnya. Ini tidak diekspor bersama modul, dan pengaturan kekuatan regularisasi secara global mungkin tidak sesuai untuk konsumen. Kecuali untuk regularisasi L1 dalam model lebar (yaitu linier jarang) atau lebar & dalam, seharusnya dimungkinkan untuk menggunakan kerugian regularisasi individual sebagai gantinya.

  • Jika Anda menggunakan dropout, normalisasi batch, atau teknik pelatihan serupa, atur hyperparameternya ke nilai yang masuk akal di banyak penggunaan yang diharapkan. Tingkat putus sekolah mungkin harus disesuaikan dengan kecenderungan masalah target untuk overfitting. Dalam normalisasi batch, momentum (alias koefisien peluruhan) harus cukup kecil untuk memungkinkan fine-tuning dengan kumpulan data kecil dan/atau kumpulan besar. Untuk konsumen tingkat lanjut, pertimbangkan untuk menambahkan tanda tangan yang memperlihatkan kontrol atas hyperparameter kritis.