IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

scipy.optimize.fsolve probleme de dimension


Sujet :

Calcul scientifique Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 21
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Je te suggère de débugger ce que sort Python à l'aide de pdb (voire winpdb si tu es sous Windows )

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 21
    Par défaut
    Merci pour l'info!

    En fait j'ai trouve le probleme:
    il faut creer le vecteur V0 a une dimension avec le code:
    au lieu de Les shapes qui sont affichees par le programme ci dessus sont alors (10,) au lieu de (10,1) et fsolve fonctionne bien.

    Et hop un petit resolu...

    Quelqu'un sait-il pourquoi python implemente 2 facons differentes de representer les vecteurs et quels sont leur role respectif?

    Merci
    A+

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Un vecteur est un tableau à une seule dimension. Un tableau à deux dimensions n'est pas à proprement parler un vecteur.

    Ensuite, il y a les matrices, et là, c'est un peu différent.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/09/2007, 14h31
  2. probleme de dimension de panel
    Par L4BiN dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 20/07/2007, 10h34
  3. [Debutante] Probleme de dimension
    Par nouha_79 dans le forum MATLAB
    Réponses: 1
    Dernier message: 20/06/2007, 00h26
  4. Probleme de dimension
    Par maxime93 dans le forum Général Python
    Réponses: 5
    Dernier message: 30/03/2007, 17h49
  5. Probleme de dimension avec les JInternalFrame
    Par L4BiN dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 19/06/2006, 08h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo