Дрейк выравнивается по каналу

#drake

Вопрос:

Почему Дрейк выравнивается по размеру канала, а не по размеру пакета?

Для вектора [n, c] numpy/torch/tensorflow имеют операцию выравнивания и ее обратную операцию изменения формы

Эта операция выравнивания выравнивается по размеру партии «n», в то время как Дрейк выравнивается по «c».

Есть ли какая-то встроенная функция для выравнивания по размеру пакета?

Например, я хочу получить доступ:

prog.initial_guess()

Но я хочу, чтобы он был сглажен по размеру пакета в соответствии с исходными переменными принятия решений в форме матрицы

Ответ №1:

Дрейк написан на C с привязкой к python. В C мы используем Eigen в качестве библиотеки линейной алгебры. Eigen::Матрица по умолчанию имеет значение основной столбец, а именно в ней хранятся данные в порядке мат[0, 0], мат[1, 0], мат[2, 0], …, мат[0, 1], мат[1, 1], …. Это отличается от того, как numpy/pytorch хранит матрицу, которая по умолчанию является основной строкой.

Специально для вашего вопроса о получении начального предположения о переменной матрицы вы можете вызвать функцию

 initial_guess = prog.GetInitialGuess(variable_matrix)  

он вернет числовую матрицу с плавающей точкой, где initial_guess[i, j] находится начальное значение переменной variable_matrix[i, j] , поэтому вам не нужно беспокоиться о выравнивании/изменении формы матрицы.