2016-03-24 34 views
34

tarafından eğitilen bir modelde bazı ağırlıkların değerini öğrenin TensorFlow ile bir ConvNet modelini eğitdim ve katmanda belirli bir ağırlık almak istiyorum. Mesela torch7’de model.modules[2].weights’a ulaşabilirdim. Katman 2'nin ağırlıklarını elde etmek için 2. TensorFlow'da aynı şeyi nasıl yapardım?TensorFlow

cevap

54

TensorFlow'da, eğitimli ağırlıklar tf.Variable nesnesiyle temsil edilir. Bir tf.Variable —, ör. Kendinizi v — olarak adlandırdıysanız, değerini sess.run(v) (sess'un tf.Session olduğu yerlerde) çağırarak bir NumPy dizisi olarak alabilirsiniz.

Şu anda tf.Variable işaretçisine sahip değilseniz, geçerli grafikte eğitilebilir değişkenlerin bir listesini tf.trainable_variables() arayarak alabilirsiniz. Bu işlev, geçerli grafikteki eğitilebilir tüm tf.Variable nesnelerinin bir listesini döndürür ve v.name özelliğini eşleyerek istediğiniz birini seçebilirsiniz. Örneğin: Ben denedim aynı fonksiyonu ile onların eğitilebilir parametrelere erişebilir Ben Tensorflow tarafından herhangi bir model hayvanat bahçesi desteğinden geçerliydi modeli yüklenemedi ama boş matrisi dönersek

# Desired variable is called "tower_2/filter:0". 
var = [v for v in tf.trainable_variables() if v.name == "tower_2/filter:0"][0] 
+0

Çok teşekkürler, @mrry. Herhangi bir cevap lütfen –

+3

modelini yüklemek için kullanılan mekanizmaya bağlıdır. Eğer daha yeni 'tf.train.import_meta_graph()' kullanırsanız, 'tf.trainable_variables()' çalışmalıdır. Alt seviyedeki 'tf.import_graph_def()' işlevini kullanırsanız, 'return_elements' isteğe bağlı argümanında değişkenin ismini geçmelisiniz ve bir tensör geri gönderilecektir (daha sonra' sess.run'a geçebilirsiniz. – mrry

+0

Çok teşekkürler –