2016-03-26 24 views

cevap

3

hücre callable bir tf.Tensor gibi bir giriş tf.Tensor ve mevcut durumunu alır fonksiyonudur ve bir tf.Tensor gibi bir çıkış tf.Tensor ve yeni durumuna döner. Giriş/çıkış ve durum tensörleri hakkında özel bir şey yoktur: bunlar diğer TensorFlow işlemlerinden gelen girişler olarak hesaplanabilir ve/veya kullanılabilir. Örnek olarak

, ptb_word_lm.py modeli bak: Burada

for time_step in range(num_steps): 
    # ... 
    (cell_output, state) = cell(inputs[:, time_step, :], state) 
    outputs.append(cell_output) 

, inputs bir dilim LSTM bir hücre için giriş almak için alındığı bir 3-D tensörü ve state olduğu cell.zero_state() kullanılarak hesaplanan initially, daha sonra her yineleme yineleme önceki yineleme durumundan kullanır.

inputs tensörü, 'luk bir tf.nn.embedding_lookup() işlemidir; outputs listesi later concatenated'dir ve bir kayıp hesaplamasına girdi olarak kullanılır. TensorFlow, RNN ve gömülme aralığındaki kayıptan geri dönüp, model değişkenlerine geri dönüyor.

+0

Açıkladığınız yöntemin dezavantajı, num_steps çok büyük olduğunda, grafiğin başlatılması için çok fazla zaman ve bellek alacağını düşünüyorum. Ayrıca eğer baştan beri zaman serisinin uzunluğunu (yani veri akışını) bilmiyorsanız, ağınız işleyecek ve işe yaramayacaktır. Yanılıyorsam düzeltin –

+0

Evet, bazı durumlarda ['tf.nn.dynamic_rnn()'] sayfasını kullanmalısınız (https://www.tensorflow.org/versions/r0.9/api_docs/python/nn Döngüyü açmayan .html # dynamic_rnn). Şu anda akış verilerinin işlenmesi için bir kütüphane yöntemi yok, ancak asıl soru bu gereksinime sahip değildi. Akış verileri için 'tf.while_loop()' kullanarak bir şey uygulayabilirsiniz, ancak mevcut uygulama, zamanın maksimum zaman sayımını bildiğiniz zaman daha etkilidir. – mrry