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.]]