是否有快速方法将多个矩阵(具有不同形状)存储(打包)到一个N-D阵列中(N无关紧要),然后在需要时将其解包?
这是我快速而又肮脏的解决方案:
def pack(*matrices):
return np.concatenate([a.flatten() for a in matrices])
def unpack(container):
shapes = [ (64, 25), (64, 1), (25, 64), (25, 1) ] #Example
sections = [ np.prod(shape) for shape in shapes ]
arrays = np.split(x, np.cumsum(sections))
return [ np.reshape(a, shape) for a, shape in zip(arrays, shapes)]
我正在使用scipy.optimize.fmin_l_bfgs_b
进行初步猜测'参数x0。在内部,执行x = array(x0, float64)
,这意味着需要一系列(元素可转换为)浮点数。如果x0 = [matrix1,matrix2,matrix3,...]则异常上升:
ValueError: setting an array element with a sequence.
因此,所有这些矩阵都需要打包成一系列浮点数,然后在需要时解压缩。