MindSpore报错 ValueError : La taille minimale des entrées 0 ne correspond pas...

1 Description de l'erreur

1.1 Environnement système

Environnement matériel (Ascend/GPU/CPU) :  Environnement logiciel GPU :  -- Version MindSpore (source ou binaire) : 1.5.2  -- Version Python (par exemple, Python 3.7.5) : 3.7.6  -- Plate-forme et distribution du système d'exploitation ( par exemple, Linux Ubuntu 16.04): Ubuntu 4.15.0-74-generic  -- version GCC/Compiler (si compilé à partir de la source):

1.2 Informations de base

1.2.1 Scénario

Le script d'entraînement consiste à calculer la valeur minimale de l'élément correspondant du tenseur d'entrée en construisant un réseau mono-opérateur minimum. Le script est le suivant :

 01 class Net(nn.Cell):
 02   def __init__(self):
 03     super(Net, self).__init__()
 04     self.minimum = ops.minumum()
 05   def construct(self, x,y):
 06     output = self.minimum(x, y)
 07     return output
 08 net = Net()
 09 x = Tensor(np.array([1.0, 2.0, 4.0]), mindspore.float64) .astype(mindspore.float32)
 10    y = Tensor(np.array([3.0, 5.0, 6.0]), mindspore.float64) .astype(mindspore.float32)
 11 output = net(x, y)
 12 print('output', output)
copie

1.2.2 Rapport d'erreur

Le message d'erreur ici est le suivant :

[EXCEPTION] PYNATIVE(95109,7fe22ea22740,python):2022-06-14-21:59:02.837.339 [mindspore/ccsrc/pipeline/pynative/pynative_execute.cc:1331] SetImplicitCast] Minimum inputs size 0 does not match the requires signature size 2
Traceback (most recent call last):
  File "182168.py", line 36, in <module>
    net = Net()
  File "182168.py", line 24, in __init__
    self.minimum = ops.minimum()
  File "/data2/llj/mindspores/r1.5/build/package/mindspore/ops/primitive.py", line 247, in __call__
    return _run_op(self, self.name, args)
  File "/data2/llj/mindspores/r1.5/build/package/mindspore/common/api.py", line 78, in wrapper
    results = fn(*arg, **kwargs)
  File "/data2/llj/mindspores/r1.5/build/package/mindspore/ops/primitive.py", line 682, in _run_op
    output = real_run_op(obj, op_name, args)
ValueError: mindspore/ccsrc/pipeline/pynative/pynative_execute.cc:1331 SetImplicitCast] Minimum inputs size 0 does not match the requires signature size 2
copie

Analyse des causes

Nous lisons le message d'erreur.Dans ValueError, il est indiqué que la taille minimale des entrées 0 ne correspond pas à la taille de signature requise 2, ce qui signifie probablement que deux entrées sont requises, mais il n'y a pas d'entrée réelle. Combiné avec la ligne 11, on constate que deux entrées sont en fait transmises. Ainsi, le problème n'est peut-être pas dans cette ligne, nous pouvons ajouter une marque d'impression après les lignes 3, 5 et 11 pour voir où le programme a été exécuté. Après exécution, on constate que seul 1 est imprimé, indiquant que le problème réside dans la quatrième ligne. Après une inspection minutieuse, on constate que le minimum utilisé dans la quatrième ligne lors de l'initialisation de l'opérateur Minimum est en minuscule, ce qui équivaut à appelant directement l'opérateur minimum de l'interface fonctionnelle, l'erreur n'est donc pas transmise.

2 solutions

Sur la base des raisons connues ci-dessus, il est facile d'apporter les modifications suivantes :

 01 class Net(nn.Cell):
 02   def __init__(self):
 03     super(Net, self).__init__()
 04     self.minimum = ops.Minimum()
 05   def construct(self, x,y):
 06     output = self.minimum(x, y)
 07     return output
 08 net = Net()
 09 x = Tensor(np.array([1.0, 2.0, 4.0]), mindspore.float64) .astype(mindspore.float32)
 10    y = Tensor(np.array([3.0, 5.0, 6.0]), mindspore.float64) .astype(mindspore.float32)
 11 output = net(x, y)
 12 print('output', output)
copie

À ce stade, l'exécution est réussie et le résultat est le suivant :

output [1. 2. 3.]

3 Résumé

Étapes pour localiser le problème de rapport d'erreur :

1. Recherchez la ligne de code utilisateur qui a signalé l'erreur : self.minimum = ops.minimum() ;

2. Selon les mots-clés du message d'erreur du journal, réduisez la portée du problème d'analyse La taille minimale des entrées 0 ne correspond pas à la taille de signature requise 2  ;

3. Il est nécessaire de se concentrer sur l'exactitude de la définition et de l'initialisation des variables.

4 Documents de référence

4.1  Interface API minimale de l'opérateur

Guess you like

Origin blog.csdn.net/beauty0220/article/details/129139358