scipy.optimize.fsolve probleme de dimension
Bonjour a tous,
je voudrais utiliser la fonction fsolve dans le package optimize de scipy mais je n'arrive pas a me debarasser d'une erreur... :(
le probleme apparait quand je veut trouver la valeur du vecteur qui minimise une certaine fonction...
En bref voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
from scipy import *
n=10
slope=100
offset=0.5
def sigmoid(val):
return 1/(1+exp(-slope*(val-offset)))
W=ones([n,n])
V0=ones([n,1])
def test(V):
return V+dot(W,sigmoid(V))
print '###'
print V0.shape
print dot(W,V0).shape
print sigmoid(V0).shape
print test(V0).shape
print '###'
Vstar=optimize.fsolve(test,V0) |
Tout semble bien marcher jusqu'a ce que j'appelle fsolve:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| user@machine1 $ python example.py
###
(10, 1)
(10, 1)
(10, 1)
(10, 1)
###
Traceback (most recent call last):
File "example.py", line 24, in <module>
Vstar=optimize.fsolve(test,V0)
File "/usr/lib64/python2.5/site-packages/scipy/optimize/minpack.py", line 112, in fsolve
check_func(func,x0,args,n,(n,))
File "/usr/lib64/python2.5/site-packages/scipy/optimize/minpack.py", line 17, in check_func
raise TypeError, "There is a mismatch between the input and output shape of %s." % thefunc.func_name
TypeError: There is a mismatch between the input and output shape of test. |
Je ne comprends pas ce " shape mismatch"... J'ai d'ailleurs affiche la taille de mes vecteurs qui semblent consistantes. J'ai essaye de passer mes arguments comme des listes... en vain, ca ne marche toujours pas.
Quelqu'un saurait-il comment s'en sortir?
Merci d'avance.
A+
Mattthieu