LSTM birimlerini hücrelere karşı anlama


32

Bir süredir LSTM'leri inceliyorum. Her şeyin nasıl çalıştığını yüksek düzeyde anlıyorum. Ancak, onları Tensorflow kullanarak uygulayacağım BasicLSTMCell'in bir dizi birim (yani num_units) parametresi gerektirdiğini fark ettim .

Gönderen bu LSTMs arasında çok kapsamlı bir açıklama, tek bir olduğunu topladık LSTM birimi aşağıdakilerden biridir

LSTM birimi

ki bu aslında bir GRU birimidir.

Bunun parametresinin num_units, BasicLSTMCellbunlardan kaç tanesini birbiriyle bağlamak istediğimize değindiğini varsayıyorum .

Bu soru bırakıyor - bu bağlamda bir "hücre" nedir? Normal bir ileri besleme sinir ağındaki bir tabakaya "hücre" eşdeğer midir?


Hala kafam karıştı, colah.github.io/posts/2015-08-Anlama -LSTM'leri okuyordum ve bunu iyi anlıyorum. Hücre terimi bu maddeye göre nasıl uygulanır? Görünüşe göre, makaledeki LSTM hücresi Tensorflow'taki bir vektör, değil mi?
Pinokyo

Yanıtlar:


17

num_unitsht

Ayrıca, https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/api_docs/python/functions_and_classes/shard9/tf.nn.rnn_cell.RNNCell.md adresinden :

Bu paketteki hücrenin tanımı, literatürde kullanılan tanımdan farklıdır. Literatürde hücre, tek bir skaler çıktısı olan bir nesneyi ifade eder. Bu paketteki tanım, bu tür birimlerin yatay bir dizisini belirtir.

"LSTM katmanı" muhtemelen daha açıktır, örneğin :

def lstm_layer(tparams, state_below, options, prefix='lstm', mask=None):
    nsteps = state_below.shape[0]
    if state_below.ndim == 3:
        n_samples = state_below.shape[1]
    else:
        n_samples = 1

    assert mask is not None
    […]

Ah, anlıyorum, o zaman bir "hücre" num_unitbirbirine bağlı LSTM hücrelerinin yatay bir dizisidir. Mantıklı. Öyleyse, standart bir ileri beslemeli ağdaki gizli bir katmana benzer miydi?

* LSTM devlet üniteleri

@rec Bu doğru
Franck Dernoncourt

1
Örneğin @Sycorax, sinir ağının girişi 10 zaman adımlı bir zaman dilimi ise, yatay boyutta 10 eleman bulunur.
Franck Dernoncourt 24:16

1
Hala kafam karıştı, colah.github.io/posts/2015-08-Anlama -LSTM'leri okuyordum ve bunu iyi anlıyorum. Hücre terimi bu maddeye göre nasıl uygulanır? Görünüşe göre, makaledeki LSTM hücresi Tensorflow'taki bir vektör, değil mi?
Pinokyo

4

LSTM / RNN diyagramlarının çoğu sadece gizli hücreleri gösterir, ancak asla bu hücrelerin birimlerini göstermez. Dolayısıyla, karışıklık. Her gizli katman, zaman adımlarının sayısı kadar gizli hücrelere sahiptir. Ve ayrıca, her bir gizli hücre aşağıdaki şemada olduğu gibi birçok gizli birimden oluşur. Bu nedenle, RNN'deki gizli bir katman matrisinin boyutsallığı (zaman adımlarının sayısı, gizli birimlerin sayısı) 'dır.

enter image description here


4

Her ne kadar mesele bu cevapta cevap verdiğimle hemen hemen aynı olsa da , bugün beni biraz şaşırtan bu sorunu, seq2seq modelinde (@Franck Dernoncourt'ın cevabı sayesinde) grafikte göstermek istiyorum. Bu basit kodlayıcı şemasında:

enter image description here

Her hbenyukarıda farklı zaman adımındaki aynı hücre (sorunuza göre GRU veya LSTM ya da hücre) ve hücredeki ağırlık vektörleri (önyargı değil) aynı büyüklüktedir ( num_units / num_hidden veya state_size veya output_size ).


num_units = nBu rakam inanıyorum
notislas

-1

Bence hücre, ayrıca gizli düğüm olarak da adlandırılan gizli hücre gibi bir düğüm anlamına gelir, çok katmanlı LSTM modeli için hücre sayısı, time_steps * num_layers ile hesaplanabilir ve num_units, time_steps değerine eşittir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.