Giriş vektörünün başka bir modelin çıktısı olduğu bir model çalışıyorum. Bu, aynı modelde ikinci modeli sıfırdan başlatırken (tf.initialize_variables()
kullanarak) ilk modelin bir denetim noktası dosyasından geri yüklenmesini içerir.Tensorflow'da birden fazla oturum ve grafik (aynı işlemde)
Önemli miktarda kod ve soyutlama var, bu yüzden ilgili bölümleri buraya yapıştırıyorum.
self.variables = [var for var in all_vars if var.name.startswith(self.name)]
saver = tf.train.Saver(self.variables, max_to_keep=3)
self.save_path = tf.train.latest_checkpoint(os.path.dirname(self.checkpoint_path))
if should_restore:
self.saver.restore(self.sess, save_path)
else:
self.sess.run(tf.initialize_variables(self.variables))
Her model kendi grafik ve seans içinde kapsamlı alınır, örneğin:
self.graph = tf.Graph()
self.sess = tf.Session(graph=self.graph)
with self.sess.graph.as_default():
# Create variables and ops.
her modeli içinde tüm değişkenler variable_scope
içinde oluşturulan aşağıdaki
geri kodudur içerik yöneticisi. aşağıdaki gibi
besleme çalışır:
- bir arka plan iş parçacığı
input = scipy.misc.imread(X)
üzerindesess.run(inference_op)
çağırır ve bir engelleme evreli kuyrukta sonucu koyar. - Ana eğitim döngüsü, sıradan okur ve ikinci modelde
sess.run(train_op)
numaralı telefonu arar.
SORUN: Hatta eğitim (ikinci modelin) çok birinci tekrarda kaybı değerleri, ishal karşısında büyük ölçüde değişmeye devam (ve birkaç iterasyonlarında nan haline) olduğunu gözlemliyorum
. İlk modelin çıktısının her zaman aynı olduğunu doğruladım. İlk modelin sess.run
'unu yorumlamak ve bunu bir pickled dosyasındaki aynı girişle değiştirmek, bu davranışı göstermez. Bu muğlak olduğunu biliyorum
loss_op = tf.nn.sparse_softmax_cross_entropy(network.feedforward())
# Apply gradients.
with tf.control_dependencies([loss_op]):
opt = tf.train.GradientDescentOptimizer(lr)
grads = opt.compute_gradients(loss_op)
apply_gradient_op = opt.apply_gradients(grads)
return apply_gradient_op
, ama daha fazla ayrıntı için mutluyum:
Bu
train_op
olduğunu. Herhangi bir yardım takdir edilir!
Aynı sorunla karşılaşıyorum. Çözümünüzü detaylandırır mısınız lütfen? –
Aynı anda 'sess.run' çalıştırmayın. Tensorflow (tüm açıkta kalan) GPU belleğinin tam kontrolünü üstlenir. Aynı anda iki farklı süreçte veya oturumda 'session.run 'çalıştırılması sorunlara neden olacaktır. – Vikesh