Apache MXNet - Módulo API de Python

La API del módulo de Apache MXNet es como un modelo FeedForward y es más fácil de componer similar al módulo Torch. Consiste en las siguientes clases:

BaseModule ([registrador])

Representa la clase base de un módulo. Se puede pensar en un módulo como un componente de cálculo o una máquina de cálculo. El trabajo de un módulo es ejecutar pases hacia adelante y hacia atrás. También actualiza los parámetros en un modelo.

Métodos

La siguiente tabla muestra los métodos que consistieron en BaseModule class-

Este método obtendrá estados de todos los dispositivos.
Métodos Definición
al revés ([out_grads]) Como su nombre lo indica, este método implementa el backward cálculo.
enlazar (formas_datos [, formas_etiquetas,…]) Vincula los símbolos para construir ejecutores y es necesario antes de que uno pueda realizar cálculos con el módulo.
encajar (train_data [, eval_data, eval_metric,…]) Este método entrena los parámetros del módulo.
adelante (data_batch [, is_train]) Como su nombre lo indica, este método implementa el cálculo Forward. Este método admite lotes de datos con varias formas, como diferentes tamaños de lote o diferentes tamaños de imagen.
forward_backward (lote_de_datos) Es una función conveniente, como su nombre lo indica, que llama tanto hacia adelante como hacia atrás.
get_input_grads ([merge_multi_context]) Este método obtendrá los gradientes de las entradas que se calcularon en el cálculo anterior hacia atrás.
get_outputs ([merge_multi_context]) Como su nombre lo indica, este método obtendrá resultados del cálculo directo anterior.
get_params () Obtiene los parámetros, especialmente aquellos que son potencialmente copias de los parámetros reales utilizados para realizar cálculos en el dispositivo.
get_states ([merge_multi_context])
init_optimizer ([kvstore, optimizer,…]) Este método instala e inicializa los optimizadores. También inicializakvstore para distribuir la formación.
init_params ([inicializador, arg_params,…]) Como su nombre lo indica, este método inicializará los parámetros y estados auxiliares.
install_monitor (mon) Este método instalará el monitor en todos los ejecutores.
iter_predict (eval_data [, num_batch, reset,…]) Este método iterará sobre las predicciones.
load_params (fname) Como el nombre lo especifica, cargará los parámetros del modelo desde el archivo.
predecir (eval_data [, num_batch,…]) Ejecutará la predicción y también recopilará los resultados.
preparar (data_batch [, sparse_row_id_fn]) El operador prepara el módulo para procesar un lote de datos determinado.
save_params (fname) Como el nombre lo especifica, esta función guardará los parámetros del modelo en un archivo.
puntuación (eval_data, eval_metric [, num_batch,…]) Ejecuta la predicción en eval_data y también evalúa el desempeño de acuerdo con el eval_metric.
set_params (arg_params, aux_params [,…]) Este método asignará el parámetro y los valores de estado auxiliar.
set_states ([estados, valor]) Este método, como su nombre lo indica, establece el valor de los estados.
actualizar() Este método actualiza los parámetros dados según el optimizador instalado. También actualiza los gradientes calculados en el lote anterior hacia adelante y hacia atrás.
update_metric (eval_metric, labels [, pre_sliced]) Este método, como su nombre lo indica, evalúa y acumula la métrica de evaluación en los resultados del último cálculo directo.
al revés ([out_grads]) Como su nombre lo indica, este método implementa el backward cálculo.
enlazar (formas_datos [, formas_etiquetas,…]) Configura los depósitos y vincula al ejecutor para la clave de depósito predeterminada. Este método representa la unión de unBucketingModule.
adelante (data_batch [, is_train]) Como su nombre lo indica, este método implementa el cálculo Forward. Este método admite lotes de datos con varias formas, como diferentes tamaños de lote o diferentes tamaños de imagen.
get_input_grads ([merge_multi_context]) Este método obtendrá los gradientes de las entradas que se calculan en el cálculo anterior hacia atrás.
get_outputs ([merge_multi_context]) Como su nombre lo indica, este método obtendrá resultados del cálculo directo anterior.
get_params () Obtiene los parámetros actuales, especialmente aquellos que son potencialmente copias de los parámetros reales utilizados para realizar cálculos en el dispositivo.
get_states ([merge_multi_context]) Este método obtendrá estados de todos los dispositivos.
init_optimizer ([kvstore, optimizer,…]) Este método instala e inicializa los optimizadores. También inicializakvstore para distribuir la formación.
init_params ([inicializador, arg_params,…]) Como su nombre lo indica, este método inicializará los parámetros y estados auxiliares.
install_monitor (mon) Este método instalará el monitor en todos los ejecutores.
load (prefijo, época [, sym_gen,…]) Este método creará un modelo a partir del punto de control previamente guardado.
load_dict ([sym_dict, sym_gen,…]) Este método creará un modelo a partir de un mapeo de diccionario (dict) bucket_keya los símbolos. También compartearg_params y aux_params.
preparar (data_batch [, sparse_row_id_fn]) El operador prepara el módulo para procesar un lote de datos determinado.
save_checkpoint (prefijo, época [, remove_amp_cast]) Este método, como su nombre lo indica, guarda el progreso actual en el punto de control para todos los depósitos en BucketingModule. Se recomienda utilizar mx.callback.module_checkpoint como epoch_end_callback para guardar durante el entrenamiento.
set_params (arg_params, aux_params [,…]) Como el nombre lo especifica, esta función asignará parámetros y valores de estado auxiliar.
set_states ([estados, valor]) Este método, como su nombre lo indica, establece el valor de los estados.
switch_bucket (bucket_key, data_shapes [,…]) Cambiará a un depósito diferente.
actualizar() Este método actualiza los parámetros dados según el optimizador instalado. También actualiza los gradientes calculados en el lote anterior hacia adelante y hacia atrás.
update_metric (eval_metric, labels [, pre_sliced]) Este método, como su nombre lo indica, evalúa y acumula la métrica de evaluación en los resultados del último cálculo directo.

Atributos

La siguiente tabla muestra los atributos constituidos en los métodos de BaseModule clase -

Atributos Definición
nombres_datos Consiste en la lista de nombres de datos requeridos por este módulo.
formas_de_datos Consiste en la lista de pares (nombre, forma) que especifican las entradas de datos a este módulo.
label_shapes Muestra la lista de pares (nombre, forma) que especifican las entradas de etiqueta para este módulo.
nombres_salida Consiste en la lista de nombres para las salidas de este módulo.
formas_de_salida Consiste en la lista de pares (nombre, forma) que especifican las salidas de este módulo.
símbolo Como nombre especificado, este atributo obtiene el símbolo asociado con este módulo.

data_shapes: puede consultar el enlace disponible en https://mxnet.apache.orgpara detalles. output_shapes: Más

output_shapes: hay más información disponible en https://mxnet.apache.org/api/python

BucketingModule (sym_gen […])

Representa el Bucketingmodule clase de un módulo que ayuda a tratar de manera eficiente con entradas de longitud variable.

Métodos

La siguiente tabla muestra los métodos que consistieron en BucketingModule class -

Atributos

La siguiente tabla muestra los atributos constituidos en los métodos de BaseModule class -

Atributos Definición
nombres_datos Consiste en la lista de nombres de datos requeridos por este módulo.
formas_de_datos Consiste en la lista de pares (nombre, forma) que especifican las entradas de datos a este módulo.
label_shapes Muestra la lista de pares (nombre, forma) que especifican las entradas de etiqueta para este módulo.
nombres_salida Consiste en la lista de nombres para las salidas de este módulo.
formas_de_salida Consiste en la lista de pares (nombre, forma) que especifican las salidas de este módulo.
Símbolo Como nombre especificado, este atributo obtiene el símbolo asociado con este módulo.

data_shapes: puede consultar el enlace en https://mxnet.apache.org/api/python/docs para más información.

output_shapes - Puede consultar el enlace en https://mxnet.apache.org/api/python/docs para más información.

Módulo (símbolo [, nombres_datos, nombres_etiquetas,…])

Representa un módulo básico que envuelve un symbol.

Métodos

La siguiente tabla muestra los métodos que consistieron en Module class -

Métodos Definición
al revés ([out_grads]) Como su nombre lo indica, este método implementa el backward cálculo.
enlazar (formas_datos [, formas_etiquetas,…]) Vincula los símbolos para construir ejecutores y es necesario antes de que uno pueda realizar cálculos con el módulo.
prestar_optimizador (módulo_compartido) Como su nombre lo indica, este método tomará prestado el optimizador de un módulo compartido.
adelante (data_batch [, is_train]) Como su nombre lo indica, este método implementa el Forwardcálculo. Este método admite lotes de datos con varias formas, como diferentes tamaños de lote o diferentes tamaños de imagen.
get_input_grads ([merge_multi_context]) Este método obtendrá los gradientes de las entradas que se calcularon en el cálculo anterior hacia atrás.
get_outputs ([merge_multi_context]) Como su nombre lo indica, este método obtendrá resultados del cálculo directo anterior.
get_params () Obtiene los parámetros, especialmente aquellos que son potencialmente copias de los parámetros reales utilizados para realizar cálculos en el dispositivo.
get_states ([merge_multi_context]) Este método obtendrá estados de todos los dispositivos.
init_optimizer ([kvstore, optimizer,…]) Este método instala e inicializa los optimizadores. También inicializakvstore para distribuir la formación.
init_params ([inicializador, arg_params,…]) Como su nombre lo indica, este método inicializará los parámetros y estados auxiliares.
install_monitor (mon) Este método instalará el monitor en todos los ejecutores.
load (prefijo, época [, sym_gen,…]) Este método creará un modelo a partir del punto de control previamente guardado.
load_optimizer_states (fname) Este método cargará un optimizador, es decir, el estado del actualizador de un archivo.
preparar (data_batch [, sparse_row_id_fn]) El operador prepara el módulo para procesar un lote de datos determinado.
remodelar (formas_datos [, formas_etiquetas]) Este método, como su nombre lo indica, reforma el módulo para nuevas formas de entrada.
save_checkpoint (prefijo, época [,…]) Guarda el progreso actual al punto de control.
save_optimizer_states (fname) Este método guarda el optimizador o el estado del actualizador en un archivo.
set_params (arg_params, aux_params [,…]) Como el nombre lo especifica, esta función asignará parámetros y valores de estado auxiliar.
set_states ([estados, valor]) Este método, como su nombre lo indica, establece el valor de los estados.
actualizar() Este método actualiza los parámetros dados según el optimizador instalado. También actualiza los gradientes calculados en el lote anterior hacia adelante y hacia atrás.
update_metric (eval_metric, labels [, pre_sliced]) Este método, como su nombre lo indica, evalúa y acumula la métrica de evaluación en los resultados del último cálculo directo.

Atributos

La siguiente tabla muestra los atributos constituidos en los métodos de Module class -

Atributos Definición
nombres_datos Consiste en la lista de nombres de datos requeridos por este módulo.
formas_de_datos Consiste en la lista de pares (nombre, forma) que especifican las entradas de datos a este módulo.
label_shapes Muestra la lista de pares (nombre, forma) que especifican las entradas de etiqueta para este módulo.
nombres_salida Consiste en la lista de nombres para las salidas de este módulo.
formas_de_salida Consiste en la lista de pares (nombre, forma) que especifican las salidas de este módulo.
label_names Consiste en la lista de nombres para etiquetas requeridas por este módulo.

data_shapes: visite el enlace https://mxnet.apache.org/api/python/docs/api/module para mas detalles.

output_shapes: El enlace adjunto https://mxnet.apache.org/api/python/docs/api/module/index.html ofrecerá otra información importante.

PythonLossModule ([nombre, nombres_datos,…])

La base de esta clase es mxnet.module.python_module.PythonModule. La clase PythonLossModule es una clase de módulo conveniente que implementa todas o muchas de las API del módulo como funciones vacías.

Métodos

La siguiente tabla muestra los métodos que consistieron en PythonLossModule clase:

Métodos Definición
al revés ([out_grads]) Como su nombre lo indica, este método implementa el backward cálculo.
adelante (data_batch [, is_train]) Como su nombre lo indica, este método implementa el Forwardcálculo. Este método admite lotes de datos con varias formas, como diferentes tamaños de lote o diferentes tamaños de imagen.
get_input_grads ([merge_multi_context]) Este método obtendrá los gradientes de las entradas que se calcularon en el cálculo anterior hacia atrás.
get_outputs ([merge_multi_context]) Como su nombre lo indica, este método obtendrá resultados del cálculo directo anterior.
install_monitor (mon) Este método instalará el monitor en todos los ejecutores.

PythonModule ([data_names, label_names…])

La base de esta clase es mxnet.module.base_module.BaseModule. La clase PythonModule también es una clase de módulo conveniente que implementa todas o muchas de las API del módulo como funciones vacías.

Métodos

La siguiente tabla muestra los métodos que consistieron en PythonModule clase -

Métodos Definición
enlazar (formas_datos [, formas_etiquetas,…]) Vincula los símbolos para construir ejecutores y es necesario antes de que uno pueda realizar cálculos con el módulo.
get_params () Obtiene los parámetros, especialmente aquellos que son potencialmente copias de los parámetros reales utilizados para realizar cálculos en el dispositivo.
init_optimizer ([kvstore, optimizer,…]) Este método instala e inicializa los optimizadores. También inicializakvstore para distribuir la formación.
init_params ([inicializador, arg_params,…]) Como su nombre lo indica, este método inicializará los parámetros y estados auxiliares.
actualizar() Este método actualiza los parámetros dados según el optimizador instalado. También actualiza los gradientes calculados en el lote anterior hacia adelante y hacia atrás.
update_metric (eval_metric, labels [, pre_sliced]) Este método, como su nombre lo indica, evalúa y acumula la métrica de evaluación en los resultados del último cálculo directo.

Atributos

La siguiente tabla muestra los atributos constituidos en los métodos de PythonModule clase -

Atributos Definición
nombres_datos Consiste en la lista de nombres de datos requeridos por este módulo.
formas_de_datos Consiste en la lista de pares (nombre, forma) que especifican las entradas de datos a este módulo.
label_shapes Muestra la lista de pares (nombre, forma) que especifican las entradas de etiqueta para este módulo.
nombres_salida Consiste en la lista de nombres para las salidas de este módulo.
formas_de_salida Consiste en la lista de pares (nombre, forma) que especifican las salidas de este módulo.

data_shapes - Siga el enlace https://mxnet.apache.org para detalles.

output_shapes: para obtener más detalles, visite el enlace disponible en https://mxnet.apache.org

SequentialModule ([registrador])

La base de esta clase es mxnet.module.base_module.BaseModule. La clase SequentialModule también es un módulo contenedor que puede encadenar más de dos (múltiples) módulos juntos.

Métodos

La siguiente tabla muestra los métodos que consistieron en SequentialModule clase

Métodos Definición
agregar (módulo, ** kwargs) Esta es la función más importante de esta clase. Agrega un módulo a la cadena.
al revés ([out_grads]) Como su nombre lo indica, este método implementa el cálculo hacia atrás.
enlazar (formas_datos [, formas_etiquetas,…]) Vincula los símbolos para construir ejecutores y es necesario antes de que uno pueda realizar cálculos con el módulo.
adelante (data_batch [, is_train]) Como su nombre lo indica, este método implementa el cálculo Forward. Este método admite lotes de datos con varias formas, como diferentes tamaños de lote o diferentes tamaños de imagen.
get_input_grads ([merge_multi_context]) Este método obtendrá los gradientes de las entradas que se calcularon en el cálculo anterior hacia atrás.
get_outputs ([merge_multi_context]) Como su nombre lo indica, este método obtendrá resultados del cálculo directo anterior.
get_params () Obtiene los parámetros, especialmente aquellos que son potencialmente copias de los parámetros reales utilizados para realizar cálculos en el dispositivo.
init_optimizer ([kvstore, optimizer,…]) Este método instala e inicializa los optimizadores. También inicializakvstore para distribuir la formación.
init_params ([inicializador, arg_params,…]) Como su nombre lo indica, este método inicializará los parámetros y estados auxiliares.
install_monitor (mon) Este método instalará el monitor en todos los ejecutores.
actualizar() Este método actualiza los parámetros dados según el optimizador instalado. También actualiza los gradientes calculados en el lote anterior hacia adelante y hacia atrás.
update_metric (eval_metric, labels [, pre_sliced]) Este método, como su nombre lo indica, evalúa y acumula la métrica de evaluación en los resultados del último cálculo directo.

Atributos

La siguiente tabla muestra los atributos que consisten en los métodos de la clase BaseModule -

Atributos Definición
nombres_datos Consiste en la lista de nombres de datos requeridos por este módulo.
formas_de_datos Consiste en la lista de pares (nombre, forma) que especifican las entradas de datos a este módulo.
label_shapes Muestra la lista de pares (nombre, forma) que especifican las entradas de etiqueta para este módulo.
nombres_salida Consiste en la lista de nombres para las salidas de este módulo.
formas_de_salida Consiste en la lista de pares (nombre, forma) que especifican las salidas de este módulo.
formas_de_salida Consiste en la lista de pares (nombre, forma) que especifican las salidas de este módulo.

data_shapes - El enlace adjunto https://mxnet.apache.org le ayudará a comprender el atributo con mucho detalle.

output_shapes - Siga el enlace disponible en https://mxnet.apache.org/api para detalles.

Ejemplos de implementación

En el siguiente ejemplo, vamos a crear un mxnet módulo.

import mxnet as mx
input_data = mx.symbol.Variable('input_data')
f_connected1 = mx.symbol.FullyConnected(data, name='f_connected1', num_hidden=128)
activation_1 = mx.symbol.Activation(f_connected1, name='relu1', act_type="relu")
f_connected2 = mx.symbol.FullyConnected(activation_1, name = 'f_connected2', num_hidden = 64)
activation_2 = mx.symbol.Activation(f_connected2, name='relu2',
act_type="relu")
f_connected3 = mx.symbol.FullyConnected(activation_2, name='fc3', num_hidden=10)
out = mx.symbol.SoftmaxOutput(f_connected3, name = 'softmax')
mod = mx.mod.Module(out)
print(out)

Output

La salida se menciona a continuación:

<Symbol softmax>

Example

print(mod)

Output

La salida se muestra a continuación:

<mxnet.module.module.Module object at 0x00000123A9892F28>

En este ejemplo a continuación, implementaremos el cálculo hacia adelante

import mxnet as mx
from collections import namedtuple
Batch = namedtuple('Batch', ['data'])
data = mx.sym.Variable('data')
out = data * 2
mod = mx.mod.Module(symbol=out, label_names=None)
mod.bind(data_shapes=[('data', (1, 10))])
mod.init_params()
data1 = [mx.nd.ones((1, 10))]
mod.forward(Batch(data1))
print (mod.get_outputs()[0].asnumpy())

Output

Cuando ejecute el código anterior, debería ver el siguiente resultado:

[[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]]

Example

data2 = [mx.nd.ones((3, 5))]

mod.forward(Batch(data2))
print (mod.get_outputs()[0].asnumpy())

Output

A continuación se muestra la salida del código:

[[2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2.]]