Şimdiye kadar topladığım kadarıyla, bir TensorFlow grafiğini bir dosyaya dökmenin ve ardından başka bir programa yüklemenin birkaç farklı yolu var, ancak nasıl çalıştıklarına dair net örnekler / bilgiler bulamadım. Zaten bildiğim şey şu:
- Modelin değişkenlerini bir kontrol noktası dosyasına (.ckpt) kaydedin
tf.train.Saver()
ve daha sonra geri yükleyin ( kaynak ) - Bir modeli .pb dosyasına kaydedin ve
tf.train.write_graph()
vetf.import_graph_def()
( kaynak ) kullanarak tekrar yükleyin. - .Pb dosyasından bir model yükleyin, yeniden eğitin ve Bazel ( kaynak ) kullanarak modeli yeni bir .pb dosyasına aktarın
- Grafiği ve ağırlıkları birlikte kaydetmek için grafiği dondurun ( kaynak )
as_graph_def()
Modeli kaydetmek için kullanın ve ağırlıklar / değişkenler için bunları sabitlerle eşleyin ( kaynak )
Ancak, bu farklı yöntemlerle ilgili birkaç soruyu çözemedim:
- Kontrol noktası dosyalarıyla ilgili olarak, bir modelin yalnızca eğitilmiş ağırlıklarını mı kaydediyorlar? Kontrol noktası dosyaları yeni bir programa yüklenebilir ve modeli çalıştırmak için kullanılabilir mi, yoksa belirli bir zamanda / aşamada bir modeldeki ağırlıkları kaydetmenin bir yolu olarak mı hizmet ediyorlar?
- Bununla ilgili
tf.train.write_graph()
olarak, ağırlıklar / değişkenler de kaydediliyor mu? - Bazel ile ilgili olarak, yeniden eğitim için yalnızca .pb dosyalarına kaydedebilir / buradan yükleyebilir mi? Bir grafiği .pb'ye dökmek için basit bir Bazel komutu var mı?
- Donma ile ilgili olarak, donmuş bir grafik kullanılarak yüklenebilir
tf.import_graph_def()
mi? - TensorFlow için Android demosu, Google'ın Inception modelinde bir .pb dosyasından yüklenir. Kendi .pb dosyamı değiştirmek isteseydim, bunu nasıl yapardım? Herhangi bir yerel kodu / yöntemi değiştirmem gerekir mi?
- Genel olarak, tüm bu yöntemler arasındaki fark tam olarak nedir? Veya daha genel olarak,
as_graph_def()
/.ckpt/.pb arasındaki fark nedir?
Kısacası, aradığım şey hem bir grafiği (çeşitli işlemlerde olduğu gibi) hem de ağırlıklarını / değişkenlerini bir dosyaya kaydetmek için bir yöntemdir, bu daha sonra grafiği ve ağırlıkları başka bir programa yüklemek için kullanılabilir. , kullanım için (mutlaka devam etmek / yeniden eğitmek gerekmez).
Bu konuyla ilgili dokümantasyon çok basit değildir, bu nedenle herhangi bir cevap / bilgi çok takdir edilecektir.