我看到线性化方法中的一些维度错误。具体而言,ValueError:形状(6,108)和(36,)未对齐:108(dim 1)!= 36(dim 0)
File "/usr/local/lib/python2.7/site-packages/openmdao/core/system.py", line 726, in _apply_linear_jac
arg_vec[param] += J.T.dot(dresids._flat(unknown)).reshape(shape)
ValueError: shapes (6,108) and (36,) not aligned: 108 (dim 1) != 36 (dim 0)
我具有限定雅可比的一部分,用于单一的输出矢量WRT所有的输入矢量的一些2D阵列。由于有几种情况符合给定的形状,因此我一直无法确定错误的确切原因。我想知道如果问题可以通过我自己扁平化阵列来解决。
任何其他想法如何解决这个错误,将不胜感激。这些渐变在1.0之前运行良好。
完整的错误消息是如下:
Traceback (most recent call last):
File "/Users/user/directory/exampleOptimization.py", line 82, in <module>
prob.run()
File "/usr/local/lib/python2.7/site-packages/openmdao/core/problem.py", line 789, in run
self.driver.run(self)
File "/usr/local/lib/python2.7/site-packages/openmdao/drivers/scipy_optimizer.py", line 191, in run
options=self.opt_settings)
File "/usr/local/lib/python2.7/site-packages/scipy/optimize/_minimize.py", line 452, in minimize
constraints, callback=callback, **options)
File "/usr/local/lib/python2.7/site-packages/scipy/optimize/slsqp.py", line 383, in _minimize_slsqp
g = append(fprime(x),0.0)
File "/usr/local/lib/python2.7/site-packages/scipy/optimize/optimize.py", line 285, in function_wrapper
return function(*(wrapper_args + args))
File "/usr/local/lib/python2.7/site-packages/openmdao/drivers/scipy_optimizer.py", line 306, in _gradfunc
return_format='array')
File "/usr/local/lib/python2.7/site-packages/openmdao/core/driver.py", line 666, in calc_gradient
sparsity=sparsity)
File "/usr/local/lib/python2.7/site-packages/openmdao/core/problem.py", line 899, in calc_gradient
sparsity=sparsity)
File "/usr/local/lib/python2.7/site-packages/openmdao/core/problem.py", line 1261, in _calc_gradient_ln_solver
dx_mat = root.ln_solver.solve(rhs, root, mode)
File "/usr/local/lib/python2.7/site-packages/openmdao/solvers/scipy_gmres.py", line 104, in solve
callback=self.monitor)
File "<string>", line 2, in gmres
File "/usr/local/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.py", line 85, in non_reentrant
return func(*a, **kw)
File "/usr/local/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.py", line 478, in gmres
work[slice2] += sclr1*matvec(work[slice1])
File "/usr/local/lib/python2.7/site-packages/scipy/sparse/linalg/interface.py", line 220, in matvec
y = self._matvec(x)
File "/usr/local/lib/python2.7/site-packages/scipy/sparse/linalg/interface.py", line 460, in _matvec
return self.__matvec_impl(x)
File "/usr/local/lib/python2.7/site-packages/openmdao/solvers/scipy_gmres.py", line 162, in mult
system._sys_apply_linear(mode, ls_inputs=self.system._ls_inputs, vois=(voi,))
File "/usr/local/lib/python2.7/site-packages/openmdao/core/group.py", line 680, in _sys_apply_linear
gs_outputs=gs_outputs)
File "/usr/local/lib/python2.7/site-packages/openmdao/core/group.py", line 680, in _sys_apply_linear
gs_outputs=gs_outputs)
File "/usr/local/lib/python2.7/site-packages/openmdao/core/system.py", line 619, in _sys_apply_linear
self.apply_linear(self.params, self.unknowns, dparams, dunknowns, dresids, mode)
File "/usr/local/lib/python2.7/site-packages/openmdao/core/component.py", line 512, in apply_linear
mode)
File "/usr/local/lib/python2.7/site-packages/openmdao/core/system.py", line 726, in _apply_linear_jac
arg_vec[param] += J.T.dot(dresids._flat(unknown)).reshape(shape)
ValueError: shapes (6,108) and (36,) not aligned: 108 (dim 1) != 36 (dim 0)
这很难从错误中知道,但我怀疑你的linearize函数返回的一个数组的大小可能不正确。问题是从python返回的错误不告诉你哪个输入/输出对,所以它可能很难找到它。你能分享你的linearize函数的代码吗? –