2017-02-08 2 views
1

Я подготовил хорошую последовательность для модели последовательности, которую я тестировал в своем локальном поле, но теперь я пытаюсь оценить множество запросов. Я вижу эту ошибку:Почему CNTK использует размер вложения для декодера?

02/08/2017 00:50:54: EXCEPTION occurred: Node 'decoderInput._' (If operation): Input dimensions [100] and [57408 x 3] are not compatible. 

57408 - это словарь. Я предполагаю, что 100 исходит из числа размеров внедрения, которое установлено в 100.

Я смущен, почему это не работает, потому что тот факт, что вход и выход «разрежен» установлен в "cntkReaderInputDef."

cntkReaderInputDef = { rawInput = { alias = "S0" ; dim = $inputVocabSize$ ; format = "sparse" } ; rawLabels = { alias = "S1" ; dim = $labelVocabSize$ ; format = "sparse" } } 

ответ

1

Опубликовано Уильям Дарлинг:

потому что вы используете вложение, необходимо использовать модифицированную версию файла CNTK.core.bs. В строке 1515, в настоящее время:

decoderFeedback = /*EmbedLabels*/ (tokens.word) # [embeddingDim x Dnew] 

Следующая строка, где ваша ошибка исходит от:

delayedDecoderFeedback = Boolean.If (Loop.IsFirst (labelSentenceStartEmbeddedScattered), labelSentenceStartEmbeddedScattered, Loop.Previous (decoderFeedback)) 

decoderFeedback имеет форму [Ш х Dnew], но labelSentenceStartEmbeddedScattered имеет форму [E] где E - размерность вложения. В BrainScript нет хорошего способа передать встроенный макрос, используемый в определении модели, поэтому вам нужно явно написать его. Итак, смените строку 1515 на:

decoderFeedback = TransposeTimes(modelAsTrained.Einput, tokens.word) 

, который превратит ваше декодерное обратное представление в нечто совместимое с формой внедрения.

Btw, format = sparse определения читателя относится только к тому, как вы отформатировали входной файл CTF. С разреженным форматом, который означает, что у вас есть вещи вроде 7: 1, что означает, что есть один горячий вектор с 1 в позиции 7 вместо того, чтобы записывать целую кучу нулей (которые вы имели бы с плотным форматом).

1

Крис Basoglu говорит:

На самом деле вы должны быть в состоянии просто скопировать свой файл CNTK.core.bs рядом с собственным файлом конфигурации. Сначала он должен выглядеть в папке.

Смежные вопросы