Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 属性错误:';numpy.ndarray和#x27;对象没有属性';尺寸';使用pytorch和scipy_Python_Scipy_Pytorch - Fatal编程技术网

Python 属性错误:';numpy.ndarray和#x27;对象没有属性';尺寸';使用pytorch和scipy

Python 属性错误:';numpy.ndarray和#x27;对象没有属性';尺寸';使用pytorch和scipy,python,scipy,pytorch,Python,Scipy,Pytorch,我有以下小代码段: import torch from scipy.optimize import minimize def f(x): return torch.norm(x) x = torch.tensor([1.0, 1.0]) y = minimize(f, x) print(y) 但是,这会导致以下错误消息: > AttributeError Traceback (most recent call >

我有以下小代码段:

import torch
from scipy.optimize import minimize 

def f(x):
    return torch.norm(x)

x = torch.tensor([1.0, 1.0])
y = minimize(f, x)
print(y)
但是,这会导致以下错误消息:

> AttributeError                            Traceback (most recent call
> last) <ipython-input-17-cb070be7a142> in <module>
>       6 
>       7 x = [1.0, 1.0]
> ----> 8 y = minimize(f, x)
>       9 print(y)
> 
> ~\Anaconda3\lib\site-packages\scipy\optimize\_minimize.py in
> minimize(fun, x0, args, method, jac, hess, hessp, bounds, constraints,
> tol, callback, options)
>     610         return _minimize_cg(fun, x0, args, jac, callback, **options)
>     611     elif meth == 'bfgs':
> --> 612         return _minimize_bfgs(fun, x0, args, jac, callback, **options)
>     613     elif meth == 'newton-cg':
>     614         return _minimize_newtoncg(fun, x0, args, jac, hess, hessp, callback,
> 
> ~\Anaconda3\lib\site-packages\scipy\optimize\optimize.py in
> _minimize_bfgs(fun, x0, args, jac, callback, gtol, norm, eps, maxiter, disp, return_all, finite_diff_rel_step, **unknown_options)    1100    
> 1101     sf = _prepare_scalar_function(fun, x0, jac, args=args,
> epsilon=eps,
> -> 1102                                   finite_diff_rel_step=finite_diff_rel_step)    1103     1104     f =
> sf.fun
> 
> ~\Anaconda3\lib\site-packages\scipy\optimize\optimize.py in
> _prepare_scalar_function(fun, x0, jac, args, bounds, epsilon, finite_diff_rel_step, hess)
>     260     # calculation reduces overall function evaluations.
>     261     sf = ScalarFunction(fun, x0, args, grad, hess,
> --> 262                         finite_diff_rel_step, bounds, epsilon=epsilon)
>     263 
>     264     return sf
> 
> ~\Anaconda3\lib\site-packages\scipy\optimize\_differentiable_functions.py
> in __init__(self, fun, x0, args, grad, hess, finite_diff_rel_step,
> finite_diff_bounds, epsilon)
>      74 
>      75         self._update_fun_impl = update_fun
> ---> 76         self._update_fun()
>      77 
>      78         # Gradient evaluation
> 
> ~\Anaconda3\lib\site-packages\scipy\optimize\_differentiable_functions.py
> in _update_fun(self)
>     164     def _update_fun(self):
>     165         if not self.f_updated:
> --> 166             self._update_fun_impl()
>     167             self.f_updated = True
>     168 
> 
> ~\Anaconda3\lib\site-packages\scipy\optimize\_differentiable_functions.py
> in update_fun()
>      71 
>      72         def update_fun():
> ---> 73             self.f = fun_wrapped(self.x)
>      74 
>      75         self._update_fun_impl = update_fun
> 
> ~\Anaconda3\lib\site-packages\scipy\optimize\_differentiable_functions.py
> in fun_wrapped(x)
>      68         def fun_wrapped(x):
>      69             self.nfev += 1
> ---> 70             return fun(x, *args)
>      71 
>      72         def update_fun():
> 
> <ipython-input-17-cb070be7a142> in f(x)
>       3 
>       4 def f(x):
> ----> 5     return torch.norm(x)
>       6 
>       7 x = [1.0, 1.0]
> 
> ~\Anaconda3\lib\site-packages\torch\functional.py in norm(input, p,
> dim, keepdim, out, dtype)
>     738         (tensor(3.7417), tensor(11.2250))
>     739     """
> --> 740     ndim = input.dim()
>     741 
>     742     # catch default case
> 
> AttributeError: 'numpy.ndarray' object has no attribute 'dim'
>属性错误回溯(最近的调用
>最后)在
>       6 
>7 x=[1.0,1.0]
>--->8y=最小化(f,x)
>9打印(y)
> 
>中的~\Anaconda3\lib\site packages\scipy\optimize\\u minimize.py
>最小化(fun、x0、参数、方法、jac、hess、hessp、边界、约束、,
>tol、回调、选项)
>610返回最小化cg(乐趣、x0、参数、jac、回调、**选项)
>611 elif meth==“bfgs”:
>-->612返回\u最小化\u BFG(乐趣、x0、参数、jac、回调、**选项)
>613 elif meth==‘牛顿重心’:
>614 return _minimize _newtoncg(fun、x0、args、jac、hess、hessp、callback、,
> 
>中的~\Anaconda3\lib\site packages\scipy\optimize\optimize.py
>最小化BFG(乐趣、x0、参数、jac、回调、gtol、标准、eps、maxiter、disp、返回全部、有限差分相对步长、**未知选项)1100
>1101 sf=标量函数(fun、x0、jac、args=args、,
>ε=每股收益,
>->1102有限差分相对步进=有限差分相对步进)1103 1104 f=
>快乐
> 
>中的~\Anaconda3\lib\site packages\scipy\optimize\optimize.py
>准备标量函数(fun,x0,jac,args,bounds,epsilon,finite,diff,rel,step,hess)
>260#计算减少了总体功能评估。
>261 sf=ScalarFunction(fun、x0、args、grad、hess、,
>-->262有限差分相对步长,界,ε=ε)
>     263 
>264返回sf
> 
>~\Anaconda3\lib\site packages\scipy\optimize\\u differentiable\u functions.py
>在初始(self,fun,x0,args,grad,hess,finite_diff_rel_step,
>有限差分界(ε)
>      74 
>75 self.\u update\u fun\u impl=update\u fun
>-->76 self.\u update\u fun()
>      77 
>78#梯度评估
> 
>~\Anaconda3\lib\site packages\scipy\optimize\\u differentiable\u functions.py
>在"更新"中(自我)
>164定义更新乐趣(自我):
>165如果未更新self.f_:
>-->166 self.\u update\u fun\u impl()
>167 self.f_updated=真
>     168 
> 
>~\Anaconda3\lib\site packages\scipy\optimize\\u differentiable\u functions.py
>在更新_fun()中
>      71 
>72 def更新_fun():
>-->73 self.f=fun\u包装(self.x)
>      74 
>75 self.\u update\u fun\u impl=update\u fun
> 
>~\Anaconda3\lib\site packages\scipy\optimize\\u differentiable\u functions.py
>在fun_包装中(x)
>68 def fun_包装(x):
>69.nfev+=1
>--->70返回乐趣(x,*args)
>      71 
>72 def更新_fun():
> 
>在f(x)中
>       3 
>4 def f(x):
>--->5个返回火炬。标准(x)
>       6 
>7 x=[1.0,1.0]
> 
>norm中的~\Anaconda3\lib\site packages\torch\functional.py(输入,p,
>dim、keepdim、out、dtype)
>738(张量(3.7417),张量(11.2250))
>     739     """
>-->740 ndim=input.dim()
>     741 
>742#捕获默认情况
> 
>AttributeError:'numpy.ndarray'对象没有属性'dim'
我不确定为什么会发生这种情况,因为我不认为我正在将任何东西转换为numpy.ndarray


任何帮助都将不胜感激。

您可以使用NumPy而不是torch

import numpy
from scipy.optimize import minimize

def f(x):
    return numpy.linalg.norm(x)

x = numpy.array([1.0, 1.0])
y = minimize(f, x)
print(y)

你可以用NumPy代替手电筒

import numpy
from scipy.optimize import minimize

def f(x):
    return numpy.linalg.norm(x)

x = numpy.array([1.0, 1.0])
y = minimize(f, x)
print(y)

你能用
numpy
代替
torch
吗?你能用
numpy
代替
torch
吗?谢谢,这是可行的。不过,我正在尝试将这一点应用到一个使用大量张量的项目中。我可能不需要将张量转换成numpy数组,但这可能会有指导意义我首先要了解导致错误的原因。
scipy
是基于
numpy
的,
minimize
将您的
x
转换为
ndarray
,并将其传递给
f
。因此
f
必须使用
ndarray
,并返回一个标量。感谢这可以工作。不过,我正在尝试应用这适用于一个使用大量张量的项目。我可能不需要将张量转换为numpy数组,但首先了解导致错误的原因可能会很有帮助。
scipy
基于
numpy
minimize
x
转换为
ndarray
,并通过that到
f
。因此
f
必须使用
ndarray
,并返回标量。