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