2015-11-09 26 views

cevap

154

Tensor t ürününüz varsa, t.eval() numaralı telefonu arayarak tf.get_default_session().run(t) numaralı telefonu arayın.

aşağıdaki gibi bir oturumunu varsayılan uygulama yapabilirsiniz

:

t = tf.constant(42.0) 
u = tf.constant(37.0) 
tu = tf.mul(t, u) 
ut = tf.mul(u, t) 
with sess.as_default(): 
    tu.eval() # runs one step 
    ut.eval() # runs one step 
    sess.run([tu, ut]) # evaluates both tensors in a single step 

:

t = tf.constant(42.0) 
sess = tf.Session() 
with sess.as_default(): # or `with sess:` to close on exit 
    assert sess is tf.get_default_session() 
    assert t.eval() == sess.run(t) 

en önemli fark, aynı adımda birçok tensörlerinin değerlerini almak için sess.run() kullanabilirsiniz olmasıdır eval ve run numaralı her aramanın tüm grafiği sıfırdan yürüteceğini unutmayın. Bir hesaplama sonucunu önbelleğe almak için onu tf.Variable'a atayın.

+2

bir beslemek için bir türlü mümkün mü tutucudur? ([sorum] (http://stackoverflow.com/questions/33810990/how-to-feed-a-placeholder)) – displayname

+0

İkinci örnekte farklı olan nedir? Ayrı işlemleri (ya da grafikleri? Ne fark ettiğinden emin değil) değerlendirmek için mi? – Pinocchio

+1

bekleyin, örneğiniz gerçekten çalışıyor mu? Denedim: 'a = tf.constant (2.0) b = tf.constant (3.0) ab = tf.matmul (a, b)' ve sadece şekiller, sanırım eşleşmediğini tensorflow gelen şikayetleri var daha doğrusu, rütbenin en az 2 olması gerekir. – Pinocchio

28

Tensör akışı hakkındaki SSS oturumu answer to exactly the same question'a sahiptir. t.eval()sess geçerli varsayılan oturumu olan sess.run(t) (demenin kısa yoludur,


t bir Tensor nesne ise iki kod aşağıdaki parçacıkları eşdeğerdir: Sadece devam edin ve burada bırakmak istiyorum.

ikinci örnekte

sess = tf.Session() 
c = tf.constant(5.0) 
print sess.run(c) 

c = tf.constant(5.0) 
with tf.Session(): 
    print c.eval() 
, blok ömrü için varsayılan oturum olarak yükleme etkisine sahiptir. bağlam yönetici olarak aktif davranır bağlam yöneticisi yaklaşım basit kullanım durumları için daha kısa kod yol açabilir (ünite testleri gibi); Çoklu grafikler ve oturumlar, Session.run()'a yapılan açık çağrılar için daha basit olabilir.

Çoğu SSS'yi açıklığa kavuşturacağından, tüm SSS boyunca en azından gözden geçirmenizi tavsiye ederim.

1

eval() işleyemez hatam varsa

tf.reset_default_graph() 

a = tf.Variable(0.2, name="a") 
b = tf.Variable(0.3, name="b") 
z = tf.constant(0.0, name="z0") 
for i in range(100): 
    z=a*tf.cos(z+i)+z*tf.sin(b-i) 
grad=tf.gradients(z,[a,b]) 

init=tf.global_variables_initializer() 

with tf.Session() as sess: 
    init.run() 
    print("z:",z.eval()) 
    print("grad",grad.eval()) 

ama Session.run()

print("grad",sess.run(grad)) 

düzeltebilir liste nesnesi

İlgili konular