Apache MXNet - Módulo API Python

O módulo API do Apache MXNet é como um modelo FeedForward e é mais fácil de compor semelhante ao módulo Torch. Consiste nas seguintes classes -

BaseModule ([logger])

Ele representa a classe base de um módulo. Um módulo pode ser considerado um componente de computação ou máquina de computação. O trabalho de um módulo é executar passes para frente e para trás. Ele também atualiza parâmetros em um modelo.

Métodos

A tabela a seguir mostra os métodos consistidos em BaseModule class-

Este método obterá estados de todos os dispositivos
Métodos Definição
para trás ([out_grads]) Como o nome indica, este método implementa o backward computação.
vincular (data_shapes [, label_shapes, ...]) Ele vincula os símbolos para construir executores e é necessário antes que se possa realizar cálculos com o módulo.
fit (train_data [, eval_data, eval_metric, ...]) Este método treina os parâmetros do módulo.
forward (data_batch [, is_train]) Como o nome indica, este método implementa o cálculo Forward. Este método oferece suporte a lotes de dados com várias formas, como tamanhos de lote diferentes ou tamanhos de imagem diferentes.
forward_backward (data_batch) É uma função conveniente, como o nome indica, que chama tanto para frente quanto para trás.
get_input_grads ([merge_multi_context]) Este método obterá os gradientes para as entradas que são calculadas no cálculo retroativo anterior.
get_outputs ([merge_multi_context]) Como o nome indica, este método obterá resultados da computação direta anterior.
get_params () Ele obtém os parâmetros, especialmente aqueles que são potencialmente cópias dos parâmetros reais usados ​​para fazer cálculos no dispositivo.
get_states ([merge_multi_context])
init_optimizer ([kvstore, otimizer, ...]) Este método instala e inicializa os otimizadores. Ele também inicializakvstore para distribuir treinamento.
init_params ([initializer, arg_params,…]) Como o nome indica, este método inicializará os parâmetros e estados auxiliares.
install_monitor (mon) Este método instalará o monitor em todos os executores.
iter_predict (eval_data [, num_batch, reset, ...]) Este método irá iterar sobre as previsões.
load_params (fname) Ele irá, como o nome especifica, carregar os parâmetros do modelo do arquivo.
prever (eval_data [, num_batch, ...]) Ele executará a previsão e também coletará os resultados.
preparar (data_batch [, sparse_row_id_fn]) O operador prepara o módulo para processar um determinado lote de dados.
save_params (fname) Como o nome especifica, esta função salvará os parâmetros do modelo em um arquivo.
pontuação (eval_data, eval_metric [, num_batch, ...]) Ele executa a previsão em eval_data e também avalia o desempenho de acordo com as eval_metric.
set_params (arg_params, aux_params [,…]) Este método atribuirá o parâmetro e os valores do estado auxiliar.
set_states ([estados, valor]) Este método, como o nome indica, define o valor dos estados.
atualizar() Este método atualiza os parâmetros fornecidos de acordo com o otimizador instalado. Ele também atualiza os gradientes calculados no lote anterior para frente e para trás.
update_metric (eval_metric, labels [, pre_sliced]) Este método, como o nome indica, avalia e acumula a métrica de avaliação nas saídas da última computação direta.
para trás ([out_grads]) Como o nome indica, este método implementa o backward computação.
vincular (data_shapes [, label_shapes, ...]) Ele configura os depósitos e vincula o executor à chave do depósito padrão. Este método representa a ligação para umBucketingModule.
forward (data_batch [, is_train]) Como o nome indica, este método implementa o cálculo Forward. Este método oferece suporte a lotes de dados com várias formas, como tamanhos de lote diferentes ou tamanhos de imagem diferentes.
get_input_grads ([merge_multi_context]) Este método obterá os gradientes para as entradas que são calculadas no cálculo retroativo anterior.
get_outputs ([merge_multi_context]) Como o nome indica, este método obterá resultados da computação direta anterior.
get_params () Ele obtém os parâmetros atuais, especialmente aqueles que são potencialmente cópias dos parâmetros reais usados ​​para fazer cálculos no dispositivo.
get_states ([merge_multi_context]) Este método obterá estados de todos os dispositivos.
init_optimizer ([kvstore, otimizer, ...]) Este método instala e inicializa os otimizadores. Ele também inicializakvstore para distribuir treinamento.
init_params ([initializer, arg_params,…]) Como o nome indica, este método inicializará os parâmetros e estados auxiliares.
install_monitor (mon) Este método instalará o monitor em todos os executores.
carregar (prefixo, época [, sym_gen, ...]) Este método criará um modelo a partir do ponto de verificação salvo anteriormente.
load_dict ([sym_dict, sym_gen,…]) Este método irá criar um modelo a partir de um mapeamento de dicionário (dict) bucket_keyaos símbolos. Também compartilhaarg_params e aux_params.
preparar (data_batch [, sparse_row_id_fn]) O operador prepara o módulo para processar um determinado lote de dados.
save_checkpoint (prefixo, epoch [, remove_amp_cast]) Este método, como o nome indica, salva o progresso atual no ponto de verificação para todos os buckets em BucketingModule. É recomendável usar mx.callback.module_checkpoint como epoch_end_callback para salvar durante o treinamento.
set_params (arg_params, aux_params [,…]) Conforme o nome especifica, esta função atribuirá parâmetros e valores de estado de pausa.
set_states ([estados, valor]) Este método, como o nome indica, define o valor dos estados.
switch_bucket (bucket_key, data_shapes [,…]) Ele mudará para um balde diferente.
atualizar() Este método atualiza os parâmetros fornecidos de acordo com o otimizador instalado. Ele também atualiza os gradientes calculados no lote anterior para frente e para trás.
update_metric (eval_metric, labels [, pre_sliced]) Este método, como o nome indica, avalia e acumula a métrica de avaliação nas saídas da última computação direta.

Atributos

A tabela a seguir mostra os atributos consistidos nos métodos de BaseModule classe -

Atributos Definição
data_names Consiste na lista de nomes para os dados exigidos por este módulo.
data_shapes Consiste na lista de pares (nome, forma) especificando as entradas de dados para este módulo.
label_shapes Mostra a lista de pares (nome, forma) especificando as entradas de rótulo para este módulo.
output_names Consiste na lista de nomes para as saídas deste módulo.
output_shapes Consiste na lista de pares (nome, forma) especificando as saídas deste módulo.
símbolo Conforme o nome especificado, este atributo obtém o símbolo associado a este módulo.

data_shapes: Você pode consultar o link disponível em https://mxnet.apache.orgpara detalhes. output_shapes: Mais

output_shapes: Mais informações estão disponíveis em https://mxnet.apache.org/api/python

BucketingModule (sym_gen […])

Representa o Bucketingmodule classe de um módulo que ajuda a lidar de forma eficiente com entradas de comprimento variável.

Métodos

A tabela a seguir mostra os métodos consistidos em BucketingModule class -

Atributos

A tabela a seguir mostra os atributos consistidos nos métodos de BaseModule class -

Atributos Definição
data_names Consiste na lista de nomes para os dados exigidos por este módulo.
data_shapes Consiste na lista de pares (nome, forma) especificando as entradas de dados para este módulo.
label_shapes Mostra a lista de pares (nome, forma) especificando as entradas de rótulo para este módulo.
output_names Consiste na lista de nomes para as saídas deste módulo.
output_shapes Consiste na lista de pares (nome, forma) especificando as saídas deste módulo.
Símbolo Conforme o nome especificado, este atributo obtém o símbolo associado a este módulo.

data_shapes - Você pode consultar o link em https://mxnet.apache.org/api/python/docs Para maiores informações.

output_shapes- Você pode consultar o link em https://mxnet.apache.org/api/python/docs Para maiores informações.

Módulo (símbolo [, data_names, label_names, ...])

Ele representa um módulo básico que envolve um symbol.

Métodos

A tabela a seguir mostra os métodos consistidos em Module class -

Métodos Definição
para trás ([out_grads]) Como o nome indica, este método implementa o backward computação.
vincular (data_shapes [, label_shapes, ...]) Ele vincula os símbolos para construir executores e é necessário antes que se possa realizar cálculos com o módulo.
borrow_optimizer (shared_module) Como o nome indica, esse método pegará emprestado o otimizador de um módulo compartilhado.
forward (data_batch [, is_train]) Como o nome indica, este método implementa o Forwardcomputação. Este método oferece suporte a lotes de dados com várias formas, como tamanhos de lote diferentes ou tamanhos de imagem diferentes.
get_input_grads ([merge_multi_context]) Este método obterá os gradientes para as entradas que são calculadas no cálculo retroativo anterior.
get_outputs ([merge_multi_context]) Como o nome indica, este método obterá resultados da computação direta anterior.
get_params () Ele obtém os parâmetros, especialmente aqueles que são potencialmente cópias dos parâmetros reais usados ​​para fazer cálculos no dispositivo.
get_states ([merge_multi_context]) Este método obterá estados de todos os dispositivos
init_optimizer ([kvstore, otimizer, ...]) Este método instala e inicializa os otimizadores. Ele também inicializakvstore para distribuir treinamento.
init_params ([initializer, arg_params,…]) Como o nome indica, este método inicializará os parâmetros e estados auxiliares.
install_monitor (mon) Este método instalará o monitor em todos os executores.
carregar (prefixo, época [, sym_gen, ...]) Este método criará um modelo a partir do ponto de verificação salvo anteriormente.
load_optimizer_states (fname) Este método carregará um otimizador, ou seja, o estado do atualizador de um arquivo.
preparar (data_batch [, sparse_row_id_fn]) O operador prepara o módulo para processar um determinado lote de dados.
remodelar (data_shapes [, label_shapes]) Este método, como o nome indica, remodela o módulo para novas formas de entrada.
save_checkpoint (prefixo, época [,…]) Ele salva o progresso atual para o ponto de verificação.
save_optimizer_states (fname) Este método salva o otimizador ou o estado do atualizador em um arquivo.
set_params (arg_params, aux_params [,…]) Conforme o nome especifica, esta função atribuirá parâmetros e valores de estado de pausa.
set_states ([estados, valor]) Este método, como o nome indica, define o valor dos estados.
atualizar() Este método atualiza os parâmetros fornecidos de acordo com o otimizador instalado. Ele também atualiza os gradientes calculados no lote anterior para frente e para trás.
update_metric (eval_metric, labels [, pre_sliced]) Este método, como o nome indica, avalia e acumula a métrica de avaliação nas saídas da última computação direta.

Atributos

A tabela a seguir mostra os atributos consistidos nos métodos de Module class -

Atributos Definição
data_names Consiste na lista de nomes para os dados exigidos por este módulo.
data_shapes Consiste na lista de pares (nome, forma) especificando as entradas de dados para este módulo.
label_shapes Mostra a lista de pares (nome, forma) especificando as entradas de rótulo para este módulo.
output_names Consiste na lista de nomes para as saídas deste módulo.
output_shapes Consiste na lista de pares (nome, forma) especificando as saídas deste módulo.
label_names Consiste na lista de nomes para rótulos exigidos por este módulo.

data_shapes: Visite o link https://mxnet.apache.org/api/python/docs/api/module para mais detalhes.

output_shapes: O link fornecido aqui https://mxnet.apache.org/api/python/docs/api/module/index.html oferecerá outras informações importantes.

PythonLossModule ([name, data_names, ...])

A base desta classe é mxnet.module.python_module.PythonModule. A classe PythonLossModule é uma classe de módulo conveniente que implementa todas ou muitas das APIs de módulo como funções vazias.

Métodos

A tabela a seguir mostra os métodos consistidos em PythonLossModule classe:

Métodos Definição
para trás ([out_grads]) Como o nome indica, este método implementa o backward computação.
forward (data_batch [, is_train]) Como o nome indica, este método implementa o Forwardcomputação. Este método oferece suporte a lotes de dados com várias formas, como tamanhos de lote diferentes ou tamanhos de imagem diferentes.
get_input_grads ([merge_multi_context]) Este método obterá os gradientes para as entradas que são calculadas no cálculo retroativo anterior.
get_outputs ([merge_multi_context]) Como o nome indica, este método obterá resultados da computação direta anterior.
install_monitor (mon) Este método instalará o monitor em todos os executores.

PythonModule ([data_names, label_names ...])

A base desta classe é mxnet.module.base_module.BaseModule. A classe PythonModule também é uma classe de módulo conveniente que implementa todas ou muitas das APIs de módulo como funções vazias.

Métodos

A tabela a seguir mostra os métodos consistidos em PythonModule classe -

Métodos Definição
vincular (data_shapes [, label_shapes, ...]) Ele vincula os símbolos para construir executores e é necessário antes que se possa realizar cálculos com o módulo.
get_params () Ele obtém os parâmetros, especialmente aqueles que são potencialmente cópias dos parâmetros reais usados ​​para fazer cálculos no dispositivo.
init_optimizer ([kvstore, otimizer, ...]) Este método instala e inicializa os otimizadores. Ele também inicializakvstore para distribuir treinamento.
init_params ([initializer, arg_params,…]) Como o nome indica, este método inicializará os parâmetros e estados auxiliares.
atualizar() Este método atualiza os parâmetros fornecidos de acordo com o otimizador instalado. Ele também atualiza os gradientes calculados no lote anterior para frente e para trás.
update_metric (eval_metric, labels [, pre_sliced]) Este método, como o nome indica, avalia e acumula a métrica de avaliação nas saídas da última computação direta.

Atributos

A tabela a seguir mostra os atributos consistidos nos métodos de PythonModule classe -

Atributos Definição
data_names Consiste na lista de nomes para os dados exigidos por este módulo.
data_shapes Consiste na lista de pares (nome, forma) especificando as entradas de dados para este módulo.
label_shapes Mostra a lista de pares (nome, forma) especificando as entradas de rótulo para este módulo.
output_names Consiste na lista de nomes para as saídas deste módulo.
output_shapes Consiste na lista de pares (nome, forma) especificando as saídas deste módulo.

data_shapes - Siga o link https://mxnet.apache.org para detalhes.

output_shapes - Para mais detalhes, visite o link disponível em https://mxnet.apache.org

SequentialModule ([logger])

A base desta classe é mxnet.module.base_module.BaseModule. A classe SequentialModule também é um módulo de contêiner que pode encadear mais de dois (múltiplos) módulos juntos.

Métodos

A tabela a seguir mostra os métodos consistidos em SequentialModule classe

Métodos Definição
adicionar (módulo, ** kwargs) Esta é a função mais importante desta classe. Ele adiciona um módulo à cadeia.
para trás ([out_grads]) Como o nome indica, este método implementa o cálculo retroativo.
vincular (data_shapes [, label_shapes, ...]) Ele vincula os símbolos para construir executores e é necessário antes que se possa realizar cálculos com o módulo.
forward (data_batch [, is_train]) Como o nome indica, este método implementa o cálculo Forward. Este método oferece suporte a lotes de dados com várias formas, como tamanhos de lote diferentes ou tamanhos de imagem diferentes.
get_input_grads ([merge_multi_context]) Este método obterá os gradientes para as entradas que são calculadas no cálculo retroativo anterior.
get_outputs ([merge_multi_context]) Como o nome indica, este método obterá resultados da computação direta anterior.
get_params () Ele obtém os parâmetros, especialmente aqueles que são potencialmente cópias dos parâmetros reais usados ​​para fazer cálculos no dispositivo.
init_optimizer ([kvstore, otimizer, ...]) Este método instala e inicializa os otimizadores. Ele também inicializakvstore para distribuir treinamento.
init_params ([initializer, arg_params,…]) Como o nome indica, este método inicializará os parâmetros e estados auxiliares.
install_monitor (mon) Este método instalará o monitor em todos os executores.
atualizar() Este método atualiza os parâmetros fornecidos de acordo com o otimizador instalado. Ele também atualiza os gradientes calculados no lote anterior para frente e para trás.
update_metric (eval_metric, labels [, pre_sliced]) Este método, como o nome indica, avalia e acumula a métrica de avaliação nas saídas da última computação direta.

Atributos

A tabela a seguir mostra os atributos consistidos nos métodos da classe BaseModule -

Atributos Definição
data_names Consiste na lista de nomes para os dados exigidos por este módulo.
data_shapes Consiste na lista de pares (nome, forma) especificando as entradas de dados para este módulo.
label_shapes Mostra a lista de pares (nome, forma) especificando as entradas de rótulo para este módulo.
output_names Consiste na lista de nomes para as saídas deste módulo.
output_shapes Consiste na lista de pares (nome, forma) especificando as saídas deste módulo.
output_shapes Consiste na lista de pares (nome, forma) especificando as saídas deste módulo.

data_shapes - O link fornecido aqui https://mxnet.apache.org irá ajudá-lo a compreender o atributo em muitos detalhes.

output_shapes - Siga o link disponível em https://mxnet.apache.org/api para detalhes.

Exemplos de implementação

No exemplo abaixo, vamos criar um 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

O resultado é mencionado abaixo -

<Symbol softmax>

Example

print(mod)

Output

O resultado é mostrado abaixo -

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

Neste exemplo abaixo, iremos implementar computação progressiva

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

Ao executar o código acima, você verá a seguinte saída -

[[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 seguir está a saída do código -

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