El puntero [top_cell_] es un error nulo en el modo MindSpore PyNative

Revisión del fenómeno :

Puede usar conjuntos de datos personalizados para el entrenamiento de red en el gráfico dinámico de MindSpore, pero al usar conjuntos de datos personalizados, se producirán los siguientes errores si no tiene cuidado:

Cuando ocurre este error, solo veo que un puntero está vacío, pero la pila de llamadas de Python está en el conjunto de datos. A continuación, abra el script del conjunto de datos personalizado correspondiente:

/home/cjj/models/official/cv/warpctc/src/dataset.py(57) 

Se encuentra que aquí hay una imagen += 1.0 operación de tensor. Entonces, después de eliminar la operación, se descubrió que el programa se ejecutaba normalmente.

Análisis de causa raíz :

La causa raíz de este error está profundamente oculta. Debido a que el marco MindSpore solo admite operaciones de subproceso único para la ejecución de un solo operador, pero la operación Tensor se usa en la función __getitem__ del conjunto de datos personalizado, es decir, se transferirá a el operador del marco para la ejecución. , debido a que el procesamiento del conjunto de datos utiliza operaciones de subprocesos múltiples, el orden de ejecución general está desordenado y se produce un error de puntero nulo. Entonces, cuando ve un error de puntero nulo y el error está en generator.cc, significa que la operación de Tensor se usa incorrectamente en el conjunto de datos.

Solución :

1. De acuerdo con la información de la pila de llamadas, busque la ubicación del error en el script del conjunto de datos personalizado.

2. Cambie la operación Tensor en el conjunto de datos personalizado para usar numpy nativo para el cálculo.

Supongo que te gusta

Origin blog.csdn.net/beauty0220/article/details/129155202
Recomendado
Clasificación