У меня есть последовательность последовательности 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()
, но это не сработало, поскольку ошибка округления привела к тому, что градиент конечной разности был равен нулю.
Заранее спасибо