El formato de datos de peso de convolución (peso / núcleo / filtro) adopta HWIO / OHWI u otro ...

Tian Haili   @ CSDN 2020-10-26

El formato de datos del peso de convolución (Peso / Núcleo / Filtro) es generalmente diferente de los datos de Tensor o Activación, y tiene su disposición específica. Pero esto profundiza en el mecanismo interno de la plataforma (entrenamiento y / o inferencia), y al público en general no le importará, por lo que esta parte de la información es escasa. Este artículo proporciona algunas pautas, puede utilizar el método de análisis en " Formato de datos gráfico NCHW y NHWC " para comprenderlo en la práctica.

 

1. Conceptos básicos

Existen las siguientes dimensiones en el núcleo / filtro de peso / convolución (Peso / Kernel / Filtro):

  • Canales de entrada I
  • Altura del filtro H Altura del grano de convolución
  • Ancho del filtro W Ancho del núcleo de convolución
  • Canales de salida O

 

Dos formatos de peso de uso común

2.1 TensorFlow

El formato de peso de convolución conv2d de TensorFlow es HWIO, que se define en filtros en tf.nn.conv2d:

El formato de peso en TF es HWIO [Kernel Height, Kernel Width, Input Channels, Output Channels]

 

2.2 TensorFlow Lite

El formato de los pesos de convolución conv2d en TFLite es OHWI [Canales de salida, Altura del núcleo, Ancho del núcleo, Canales de entrada].

En el proceso de conversión del modelo TensorFlow al modelo TFLite, los pesos también se convierten, que en realidad es la operación de transposición de Tensor.

Esta parte la realiza TFLite Converter (TOCO). Debido a que se realiza antes de que se ejecute Runtime, no habrá conversión en línea y este proceso no afectará el rendimiento.

 

2.3 Otro

Debido a que TVM necesita usar el formato de modelo admitido por el marco de ML convencional para admitir el frontend (Frontend), TVM tiene muchas consideraciones al respecto y hay muchas discusiones significativas.

Puede consultar:

Para el formato de datos NCHW de TVM, Kernel usa OIHW; para el formato de datos NHWC, Kernel usa HWIO.

y entonces,

  • Para TensorFlow, los datos están en formato NHWC, Kernel está en formato HWIO y TVM es totalmente compatible;
  • Para TFLite, los datos también son NHWC, pero Kernle es OHWI, y Kernel debe convertirse a HWIO;
  • Para ACL (Arm Compute Library), como Codegen, la situación es más complicada, por lo que no la expandiré aquí.

 

3. Otros temas

1. La descripción anterior es generalmente para el núcleo de convolución conv2d, y la convolución en profundidad será diferente.

2. Cuando se trata de conversión de formato, esto se refiere a la operación de transposición. La transposición llevará mucho tiempo y debe realizarse en el proceso de conversión (o compilación) del modelo antes de que se ejecute el tiempo de ejecución, para no afectar el rendimiento del tiempo de ejecución.

3. Para la visualización visual de HWIO y OHWI, consulte " Ilustración de formatos de datos NCHW y NHWC " y " nChw8c además de formatos de datos NCHW y NHWC " para dibujar diagramas 3-D y luego expandir unidimensional a 4-D.

 

Supongo que te gusta

Origin blog.csdn.net/thl789/article/details/109300314
Recomendado
Clasificación