2015-11-12 38 views
28

'un şu anki değerini alın TensorFlow ile başlıyorum (hepimiz değil) ve son birkaç saatliğine dokümanlar okuyordum ancak bunun nasıl yapılacağını anlayamadım.TensorFlow - Değişken

somut olarak, bir değişken olduğunu varsayalım:

x = tf.Variable(...) 

Bu değişken .job yapılır eğitim() sırasında güncellenebilir.

Soru şu, değişkenin şu anki değerini elde etmenin en iyi yolu nedir? Biz bu kullanabiliriz biliyorum:

session.run(x) 

Ama bu operasyonların bir bütün zinciri tetikleyecek korkuyorum ve burada davranışı açıklayan dokümanlar bulamadık. Theano yılında

, sadece ben TensorFlow eşdeğer şey arıyorum

y = theano.shared(...) 
y_vals = y.get_value() 

yapabilirdi.

cevap

17

Genel olarak, session.run (x) yalnızca x değerini hesaplamak için gerekli olan düğümleri değerlendirecek ve başka hiçbir şey içermeyecektir, bu nedenle değişkenin değerini incelemek istiyorsanız nispeten ucuz olmalıdır.

Daha fazla içerik için bu mükemmel yanıtı https://stackoverflow.com/a/33610914/5543198'a bir göz atın.

+14

neden u nasıl biri sadece referans veya kapsamını bilmek eğer değişken x almak için insanlara anlatmak için güzel olabilir ... – Martian2049

+1

sadece açıklamada olmalıdır .... aslında soruya cevap değil için puan aldın adı –

27

Değişkenin değerini elde etmenin tek yolu, bir session içinde çalıştırmaktır.

A tensör nesne operasyonda, sonucuna sembolik kolu olan ama aslında operasyonun çıktı değerlerini tutmaz: FAQ it is written yılında.

Yani TF eşdeğer olacaktır: init = global_variables_initializer() ile

import tensorflow as tf 
x = tf.Variable([1.0, 2.0]) 

init = tf.global_variables_initializer() 

sess = tf.Session() 
sess.run(init) 
v = sess.run(x)  
print v # will show you your variable. 

kısım önemlidir ve değişkenlerini başlatmak için yapılmalıdır.

Ayrıca Ipython'da çalışıyorsanız InteractiveSession'a bir göz atın.

+0

(bir işaretçi almak için) Ve çok açık olmak: değişkeni Koşu değişkenin yalnızca geçerli değerini üretecek; onunla ilişkili herhangi bir atamayı çalıştıramaz *. O ucuz. – dga

+0

@dga evet, değişken n diğer değişkenlere bağlıysa, değerlendirilmeleri de gerekir. Eğer bir çok kişinin değerini almak istiyorsanız, şunları yapın: 'a, b = sess.run ([v1, v2])' –

15

tf.Print hayatınızı kolaylaştırabilir! Kodunuz değerlendirildiğinde, kodunuzda tf.Print satırının çağrıldığı anda yazdırmak için söylediğiniz tensörün (t) değerini . Yani, örneğin

:

import tensorflow as tf 
x = tf.Variable([1.0, 2.0]) 
x = tf.Print(x,[x]) 
x = 2* x 

tf.initialize_all_variables() 

sess = tf.Session() 
sess.run() 

[1.0 ila 2.0]

bu tf.Print çizgidir an x değerini yazar için.bunun yerine

v = x.eval() 
print(v) 

yaparsanız alacak:

[2,0 4,0]

size x nihai değeri verecektir çünkü.