Как оценить веса и смещения LSTM как двойные, а не одиночные - PullRequest
0 голосов
/ 16 июня 2019

У меня есть последовательность последовательности LSTM, которая была обучена в MATLAB deepLearningToolbox.Однако, когда я использовал эту сеть для прогнозирования, сеть возвращает матрицы выходных последовательностей в виде чисел с одинарной точностью:

yPred = predict(LSTM, X);
class(yPred{1})
ans =
    'single'

Я думаю, это потому, что веса и смещения сети были оценены во время обучения как единичные:

class(LSTM.Layers(2,1).InputWeights)
ans =
    'single'

Когда я пытаюсь изменить это значение на двойное, я получаю сообщение об ошибке:

LSTM.Layers(2,1).InputWeights = double(LSTM.Layers(2,1).InputWeights)
You cannot set the read-only property 'Layers' of
SeriesNetwork.

Есть ли способ обучить (или переобучить) сеть, чтобы все весаи смещения сети оцениваются как двойные?

Примечание: мне нужен вывод как двойной, потому что я буду использовать сеть как часть целевой функции, которую я минимизирую, используя fminunc(), который может толькоминимизировать функции, которые возвращают удваивается.Я попытался преобразовать вывод в double, используя double(), но это не сработало, поскольку ошибка округления привела к тому, что градиент конечной разности был равен нулю.

Заранее спасибо

...