德雷克按通道变平

Drake flattens by channel

为什么 Drake 沿着通道维度而不是沿着批次维度展平?

对于 [n, c] 向量,numpy/torch/tensorflow 有一个展平操作及其逆操作,一个整形操作

此展平操作沿批量维度“n”展平,而 Drake 沿“c”展平

是否有一些内置函数可以沿批次维度进行展平?

例如我要访问:

prog.initial_guess()

但我希望它根据原始矩阵形状的决策变量沿着批次维度展平

Drake 是用 C++ 编写的,带有 python 绑定。在 C++ 中,我们使用 Eigen 作为我们的线性代数库。 Eigen::Matrix默认为major列,即按照mat[0, 0], mat[1, 0], mat[2, 0], ..., mat[0, 1]的顺序存储数据, mat[1, 1], .... 这与 numpy/pytorch 存储矩阵的方式不同,后者默认为行专业。

具体针对你关于获取矩阵变量初始猜测的问题,你可以调用函数

initial_guess = prog.GetInitialGuess(variable_matrix)

会return一个float的numpy矩阵,其中initial_guess[i, j]是变量variable_matrix[i, j]的初始猜测值,所以不用担心矩阵flattening/reshaping.