Różnica między próbkami, krokami czasowymi i cechami w sieci neuronowej

17

Przeglądam następujący blog na sieci neuronowej LSTM: http://machinelearningmastery.com/understanding-stateful-lstm-recurrent-neural-networks-python-keras/

Autor przekształca wektor wejściowy X jako [próbki, przedziały czasowe, cechy] dla różnych konfiguracji LSTM.

Autor pisze

Rzeczywiście, sekwencje liter są krokami czasowymi jednej cechy, a nie krokiem czasu oddzielnych cech. Daliśmy sieci większy kontekst, ale nie więcej sekwencji, niż się spodziewano

Co to znaczy?

Vipul Jain
źródło

Odpowiedzi:

16

Znalazłem to tuż pod [przykładami, stopniami czasu, funkcjami], którymi jesteś zainteresowany.

X = numpy.reshape(dataX, (len(dataX), seq_length, 1))

Próbki - jest to długość (dataX) lub liczba posiadanych punktów danych.

Przedziały czasowe - odpowiada to liczbie kroków czasowych uruchamianych przez twoją cykliczną sieć neuronową. Jeśli chcesz, aby twoja sieć miała pamięć 60 znaków, ta liczba powinna wynosić 60.

Funkcje - to liczba funkcji na każdym kroku. W przypadku przetwarzania zdjęć jest to liczba pikseli. W tym przypadku wydaje się, że masz 1 funkcję na krok czasu.

Joonatan Samuel
źródło
1
czy możesz wyjaśnić różnicę między: X = numpy.reshape (dataX, (len (dataX), 3, 1)) i X = numpy.reshape (dataX, (len (dataX), 1, 3)) Jak to wpływa na lstm?
Vipul Jain
1
(len (dataX), 3, 1) uruchamia LSTM dla 3 iteracji, wprowadzając wektor wejściowy kształtu (1,). (len (dataX), 1, 3) uruchamia LSTM dla 1 iteracji. Co oznacza, że ​​nawet powtarzalne połączenia są zupełnie bezużyteczne, ponieważ z poprzednich iteracji nie ma żadnych informacji zwrotnych. W tym przypadku kształt wejściowy do RNN ma kształt (3,)
Joonatan Samuel
„(len (dataX), 3, 1) uruchamia LSTM dla 3 iteracji”, nie używamy do tego epoki. czy to znaczy tak samo jak epoka = 3?
Vipul Jain
1
Jedna epoka w tłumaczeniu zgrubnym oznacza, że ​​trenowaliśmy raz w każdym punkcie danych w naszym zbiorze danych. Podczas treningu przejrzenie przykładów len (dataX) liczy się jako 1 epoka. Jednak RNN ​​pobierają dane sekwencyjnie. Na każdym przykładzie szkolenia musisz podawać dane w wielu iteracjach. Na przykład mam słowo „samochód” i na każdej iteracji podaję jedną literę, pozwól mu zakończyć obliczenia, a następnie podaj następną literę. Aby zakończyć przetwarzanie słowa „samochód”, potrzebne są 3 iteracje do przetworzenia całego słowa litera po literze.
Joonatan Samuel
@JoonatanSamuel cześć, wiem, że upłynęło dużo czasu, ale mam problem z zrozumieniem tego samego tematu. Twoja odpowiedź jest bardzo jasna, ale nadal jestem trochę zdezorientowana. Wyobraźmy sobie, że mieliśmy szereg czasowy opisujący sprzedaż każdego miesiąca przez kilka lat (powiedzmy). Wyobraźmy sobie na przykład len (dane) = 3000, data.shape = (3000,1), więc mamy 3000 miesięcy zarejestrowanych. Przewiduj następne : Jeśli chcę użyć N poprzedniej obserwacji do przewidzenia następnej (tylko następnej!), Jaki powinien być kształt danych wejściowych do LSTM? Na przykład, jeśli chcemy użyć t-n,..., t-2, t-1do przewidywania t.
Euler_Salter
0

Jest trochę za późno, ale na wszelki wypadek; Próbka może odnosić się do poszczególnych przykładów treningowych. Zmienna „batch_size” jest zatem liczbą próbek wysłanych do sieci neuronowej. To znaczy, ile różnych przykładów podajesz jednocześnie do sieci neuronowej.

TimeSteps to czas. To jest czas, jaki ma każda twoja próbka. Na przykład próbka może zawierać kroki 128-czasowe, przy czym każdy krok może być 30-sekundowy dla przetwarzania sygnału. W przetwarzaniu języka naturalnego (NLP) krok czasowy może być powiązany ze znakiem, słowem lub zdaniem, w zależności od konfiguracji.

Funkcje to po prostu liczba wymiarów, które karmimy za każdym razem. Na przykład w NLP słowo może być reprezentowane przez 300 funkcji za pomocą word2vec. W przypadku przetwarzania sygnału, udawajmy, że twój sygnał jest 3D. Oznacza to, że masz sygnały X, Y i Z, takie jak pomiary akcelerometru na każdej osi. Oznacza to, że dla każdej próbki wysyłane byłyby 3 funkcje na każdym etapie.

Przez Guillaume

Zielony
źródło
0

Moja odpowiedź z przykładem: [„witaj, to jest xyz”, „jak się masz”, „wielki człowiek ...”]

w tym przypadku „[próbki, przedziały czasowe, funkcje]” oznaczają:

  • przykład: 3, ponieważ na liście znajdują się 3 elementy
  • przedziały czasowe: tutaj możesz wziąć max_length = 4 długość („witaj, to jest xyz”) = 4; długość („jak się masz”) = 4; length („great man ...”) = 2 (po usunięciu interpunkcji „.”). Powodem, dla którego mówimy, że jest to przedział czasowy, jest to, że w pierwszym elemencie „hello this is xyz” ==> t0 („hello”), t1 („this”), t2 („is”) i t3 („xyz”)
  • cechy: rozmiar osadzania dla każdego słowa. np. „hello”: tablica 50D, „this”: tablica 50D i tak dalej
tintin
źródło