2015-11-24 39 views
8

kullanarak değişken toplu boyutta çalışan bir grafik oluşturun Ben, tp.placeholders() ops değerini 2B tensörler olan değişken yığın boyutlarını beslemek için kullanın ve çalıştırdığımda bu tensörler için farklı değerler sağlamak için besleme mekanizmasını kullanın (). Ben Tensorflow

TypeError: 'Tensor' object is not iterable.

ardından

var benim kodudur:

with graph.as_default(): 
    train_index_input = tf.placeholder(tf.int32, shape=(None, window_size)) 
    train_embeddings = tf.Variable(tf.random_uniform([vocabulary_size, embedding_dimension], -1.0, 1.0)) 
    embedding_input = [tf.nn.embedding_lookup(train_embeddings, x) for x in train_index_input] 
    ...... 
    ...... 

Ben grafik çalıştırmadan tensör "train_index_input" içeriğini göremiyorum gibi, bu yüzden "nin hatası 'tensör' nesnedir bu şekle [batch_size, embedding_dimension]sahiptir 'embedding_input: iterable değil" ne elde etmek istediğiniz bir gömme matristir

embedding_input = [tf.nn.embedding_lookup(train_embeddings, x) for x in train_index_input] 

kodu için yükseltir'sabit değil. Tensorflow'da 2 boyutlu tensörler için arama yapmak için yeni bir operasyon tanımlamalı mıyım? Veya bunu yapmanın başka yolları Teşekkürler

cevap

7

Bir Tensorflow yer tutucusu üzerinden python düzeyinde liste anlama (for x in train_index_input) yapmaya çalışıyorsunuz. Bu işe yaramaz - Python'un bir tf nesnesinin içinde ne olduğu hakkında bir fikri yoktur.

bir toplu gömme araması gerçekleştirmek için, sadece dümdüz edilir senin toplu yapabileceklerini:

looked_up_embeddings = tf.nn.embedding_lookup(train_embeddings, train_indexes_flat) 

sonra sağ gruplar halinde geri yeniden şekillendirmek: katıştırma araması üzerinden

train_indexes_flat = tf.reshape(train_index_input, [-1]) 

run it :

embedding_input = tf.reshape(looked_up_embeddings, [-1, window_size]) 
+0

Benzer bir soru var, Girdi şekli 'dir [batch_size, maxstep, 50, 50]' dır ve [batch_size, maxstep, 5 * 5 * 32] 'haline getirmek için belirli bir cnn kullanın, ancak grafiği döngü olmadan oluşturmak zordur. Bir fikri var mı? Çok teşekkür ederim. – Sraw