Wykonuję model sekwencji do sekwencji w celu wyrównania fonemów. Konkretnie moje dane kolejowe wyglądać sparowanych sekwencji (fonem - długość), gdzie fonem jest jeden gorący wektor i długości jest pływak. Więc chcę karmić model sekwencją fonem i uzyskać odpowiednią długość długości.CNTK: Funkcja utraty sekwencji do przetwarzania sekwencyjnego
Moja sieć jest na ogół zbudowane, takie jak:
model = Sequential(
EmbeddingLayer{embeddingSize} :
RecurrentLSTMLayerStack {lstmDims} :
LinearLayer{1}
)
LinearLayer{1}
należy zrobić konwersję z lstmDims
1 jeśli ja dostać rzeczy prawo. Kiedy więc karmię model sekwencją o długości N, powinienem otrzymać również wynikową długość N.
Teraz chcę ustawić odpowiednią funkcję straty, która moim zdaniem powinna być średnią różnicą między elementami znanej sekwencji wyników i wyjściowego modelu Uśrednianie powinno odbywać się za pomocą osi czasu, aby można było zarządzać sekwencjami o różnych długościach.
miałem zamiar zrobić coś takiego
objectives = Input(1) #actually a sequence here as stated in the reader
result = model(features)
errs = Abs(objectives - result)
loss_function = ReduceMean(errs)
criterionNodes = (loss_function)
ale w Reduction Operations to wyraźnie stwierdził, że
Operacje te nie obsługują redukcję nad sekwencjami. Zamiast tego możesz to osiągnąć z powtarzaniem.
Nie jestem pewien, jak korzystać z powtarzalności dla mojego zadania. I nie jestem też pewien, czy cała koncepcja jest w porządku.
Dzięki! Wygląda na to, czego szukałem! Myślałem również o użyciu 'SumElements' zamiast używania powtarzania dla' sum' part, ale nie jest jasne, czy to jest w porządku (SumElements nie ma dostępnej dokumentacji). – Mikhail