Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

quantizationDetails

Mostrar información de cuantificación para una red neuronal

Desde R2022a

Descripción

qDetails = quantizationDetails(net) devuelve un arreglo de estructura de 1 por 1 que contiene información de cuantificación para la red neuronal. Los datos se devuelven como estructura con los campos:

  • IsQuantized: devuelve 1 (verdadero) si la red se cuantifica; en caso contrario, devuelve 0 (falso).

  • TargetLibrary: biblioteca de destino para la generación de código.

  • QuantizedLayerNames: lista de capas cuantificadas.

  • QuantizedLearnables: parámetros cuantificados de la red que se pueden aprender.

ejemplo

Ejemplos

contraer todo

En este ejemplo se muestra cómo visualizar la información de cuantificación para una red neuronal.

Cargue la red preentrenada. net es una red neuronal convolucional de SqueezeNet que se ha reentrenado usando la transferencia del aprendizaje para clasificar imágenes en el conjunto de datos de MerchData.

load squeezedlnetmerch
net
net = 
  dlnetwork with properties:

         Layers: [67×1 nnet.cnn.layer.Layer]
    Connections: [74×2 table]
     Learnables: [52×3 table]
          State: [0×3 table]
     InputNames: {'data'}
    OutputNames: {'prob'}
    Initialized: 1

  View summary with summary.

Utilice la función quantizationDetails para ver que la red no está cuantificada.

qDetails_original = quantizationDetails(net)
qDetails_original = struct with fields:
            IsQuantized: 0
          TargetLibrary: ""
    QuantizedLayerNames: [0×0 string]
    QuantizedLearnables: [0×3 table]

El campo IsQuantized devuelve 0 (false) porque la red original usa el tipo de datos de precisión simple y de punto flotante.

Descomprima y cargue las imágenes de MerchData como un almacén de datos de imágenes. Defina un objeto augmentedImageDatastore para modificar el tamaño de los datos para la red y dividir los datos en conjuntos de calibración y validación para su uso en la cuantificación.

unzip('MerchData.zip');
imds = imageDatastore('MerchData', ...
    'IncludeSubfolders',true, ...
    'LabelSource','foldernames');
[calData, valData] = splitEachLabel(imds, 0.7, 'randomized');
aug_calData = augmentedImageDatastore([227 227], calData);
aug_valData = augmentedImageDatastore([227 227], valData);

Cree un objeto dlquantizer y especifique la red que se debe cuantificar. Establezca el entorno de ejecución en MATLAB. Cuando utiliza el entorno de ejecución de MATLAB, la cuantificación se lleva a cabo con el tipo de datos de punto fijo fi que requiere una licencia de Fixed-Point Designer™.

quantObj = dlquantizer(net,'ExecutionEnvironment','MATLAB');

Utilice la función de calibración para entrenar la red con entradas de muestra y recopilar información de intervalos.

calResults = calibrate(quantObj,aug_calData);

Utilice el método quantize para cuantificar el objeto de red y devolver una red cuantificada que se puede simular.

qNet = quantize(quantObj)
qNet = 
  Quantized dlnetwork with properties:

         Layers: [67×1 nnet.cnn.layer.Layer]
    Connections: [74×2 table]
     Learnables: [52×3 table]
          State: [0×3 table]
     InputNames: {'data'}
    OutputNames: {'prob'}
    Initialized: 1

  View summary with summary.
  Use the quantizationDetails function to extract quantization details.

Utilice el método quantizationDetails para extraer la información de cuantificación.

qDetails = quantizationDetails(qNet)
qDetails = struct with fields:
            IsQuantized: 1
          TargetLibrary: "none"
    QuantizedLayerNames: [53×1 string]
    QuantizedLearnables: [52×3 table]

Inspeccione el campo QuantizedLayerNames para ver una lista de capas cuantificadas.

qDetails.QuantizedLayerNames
ans = 53×1 string
    "conv1"
    "relu_conv1"
    "fire2-squeeze1x1"
    "fire2-relu_squeeze1x1"
    "fire2-expand1x1"
    "fire2-relu_expand1x1"
    "fire2-expand3x3"
    "fire2-relu_expand3x3"
    "fire3-squeeze1x1"
    "fire3-relu_squeeze1x1"
    "fire3-expand1x1"
    "fire3-relu_expand1x1"
    "fire3-expand3x3"
    "fire3-relu_expand3x3"
    "fire4-squeeze1x1"
    "fire4-relu_squeeze1x1"
    "fire4-expand1x1"
    "fire4-relu_expand1x1"
    "fire4-expand3x3"
    "fire4-relu_expand3x3"
    "fire5-squeeze1x1"
    "fire5-relu_squeeze1x1"
    "fire5-expand1x1"
    "fire5-relu_expand1x1"
    "fire5-expand3x3"
    "fire5-relu_expand3x3"
    "fire6-squeeze1x1"
    "fire6-relu_squeeze1x1"
    "fire6-expand1x1"
    "fire6-relu_expand1x1"
      ⋮

Inspeccione el campo QuantizedLearnables para ver los valores cuantificados para parámetros que se pueden aprender en la red.

qDetails.QuantizedLearnables
ans=52×3 table
          Layer           Parameter          Value       
    __________________    _________    __________________

    "conv1"               "Weights"    {3×3×3×64   int8 }
    "conv1"               "Bias"       {1×1×64     int32}
    "fire2-squeeze1x1"    "Weights"    {1×1×64×16  int8 }
    "fire2-squeeze1x1"    "Bias"       {1×1×16     int32}
    "fire2-expand1x1"     "Weights"    {1×1×16×64  int8 }
    "fire2-expand1x1"     "Bias"       {1×1×64     int32}
    "fire2-expand3x3"     "Weights"    {3×3×16×64  int8 }
    "fire2-expand3x3"     "Bias"       {1×1×64     int32}
    "fire3-squeeze1x1"    "Weights"    {1×1×128×16 int8 }
    "fire3-squeeze1x1"    "Bias"       {1×1×16     int32}
    "fire3-expand1x1"     "Weights"    {1×1×16×64  int8 }
    "fire3-expand1x1"     "Bias"       {1×1×64     int32}
    "fire3-expand3x3"     "Weights"    {3×3×16×64  int8 }
    "fire3-expand3x3"     "Bias"       {1×1×64     int32}
    "fire4-squeeze1x1"    "Weights"    {1×1×128×32 int8 }
    "fire4-squeeze1x1"    "Bias"       {1×1×32     int32}
      ⋮

Argumentos de entrada

contraer todo

Red neuronal cuantificada, especificada como un objeto dlnetwork, SeriesNetwork o DAGNetwork.

Historial de versiones

Introducido en R2022a

expandir todo