Ao escrever um artigo / fazer uma apresentação sobre um tópico sobre redes neurais, geralmente se visualiza a arquitetura das redes.
Quais são as maneiras boas / simples de visualizar arquiteturas comuns automaticamente?
machine-learning
neural-network
deep-learning
visualization
Martin Thoma
fonte
fonte
Respostas:
Tensorflow, Keras, MXNet, PyTorch
Se a rede neural for fornecida como um gráfico do Tensorflow, você poderá visualizar esse gráfico com o TensorBoard .
Aqui está como a MNIST CNN se parece:
Você pode adicionar nomes / escopos (como "desistência", "softmax", "fc1", "conv1", "conv2").
Interpretação
O seguinte é apenas sobre o gráfico esquerdo. Ignoro os 4 pequenos gráficos na metade direita.
Cada caixa é uma camada com parâmetros que podem ser aprendidos. Por inferência, as informações fluem de baixo para cima. Elipses são camadas que não contêm parâmetros aprendidos.
A cor das caixas não tem um significado.
Não tenho certeza do valor das pequenas caixas tracejadas ("gradientes", "Adam", "salvar").
fonte
Recentemente, criei uma ferramenta para desenhar arquiteturas NN e exportar SVG, chamada NN-SVG
fonte
No Caffe, você pode usar caffe / draw.py para desenhar o protobuffer do NetParameter:
No Matlab, você pode usar o view (net)
Keras.js :
fonte
Eu adicionaria visualizações ASCII usando keras-sequential-ascii (aviso: eu sou o autor).
Uma pequena rede para o CIFAR-10 ( deste tutorial ) seria:
Para o VGG16, seria:
fonte
Existe um projeto de código aberto chamado Netron
fonte
Aqui está outra maneira: dotnets , usando o Graphviz , fortemente inspirado neste post de Thiago G. Martins.
fonte
Keras
O módulo keras.utils.vis_utils fornece funções utilitárias para plotar um modelo Keras (usando graphviz)
A seguir, é mostrado um modelo de rede em que a primeira camada oculta possui 50 neurônios e espera 104 variáveis de entrada.
fonte
O pacote Python
conx
pode visualizar redes com ativações com a funçãonet.picture()
de produzir imagens SVG, PNG ou PIL como esta:O Conx é construído em Keras e pode ler nos modelos de Keras. O mapa de cores em cada banco pode ser alterado e pode mostrar todos os tipos de bancos.
Mais informações podem ser encontradas em: http://conx.readthedocs.io/en/latest/
fonte
Eu tenho trabalhado em um visualizador de rede neural de arrastar e soltar (e mais). Aqui está um exemplo de uma visualização para uma arquitetura do tipo LeNet. Modelos com fan-out e fan-in também são facilmente modelados. Você pode visitar o site em https://math.mit.edu/ennui/
fonte
Em R,
nnet
não vem com uma função de plotagem, mas o código para isso é fornecido aqui .Como alternativa, você pode usar o pacote melhor e mais recente chamado IMHO,
neuralnet
que apresenta umaplot.neuralnet
função, para que você possa fazer:neuralnet
não é usado tanto quantonnet
porquennet
é muito mais antigo e é enviado com r-cran. Masneuralnet
possui mais algoritmos de treinamento, incluindo retropropagação resistente, que falta mesmo em pacotes como o Tensorflow, e é muito mais robusta às opções de hiperparâmetros e possui mais recursos em geral.fonte
Existem alguns novos esforços alternativos na visualização de redes neurais.
Por favor, veja estes artigos:
Impressionantes 'escaneamentos cerebrais de IA' revelam o que as máquinas veem à medida que aprendem novas habilidades
Dentro de um 'cérebro' da IA - Como é o aprendizado de máquina?
Essas abordagens são mais orientadas para a visualização da operação da rede neural, no entanto, a arquitetura NN também é um pouco visível nos diagramas resultantes.
Exemplos:
fonte
Não é por si só bacana para trabalhos, mas é muito útil para mostrar às pessoas que não sabem muito sobre redes neurais como pode ser sua topologia. Esta biblioteca Javascript (Neataptic) permite visualizar sua rede:
fonte
Você pode ler o artigo popular Noções básicas sobre redes neurais através de visualização profunda que discute a visualização de redes convolucionais. Sua implementação não apenas exibe cada camada, mas também descreve as ativações, pesos, desconvoluções e muitas outras coisas que são profundamente discutidas no artigo. É o código está em
caffe'
. A parte interessante é que você pode substituir o modelo pré-treinado pelo seu.fonte
O Tensorspace-JS é uma ferramenta fantástica para visualização 3D da arquitetura de rede:
https://tensorspace.org/
e aqui está um bom post sobre como escrever um programa:
https://medium.freecodecamp.org/tensorspace-js-a-way-to-3d-visualize-neural-networks-in-browsers-2c0afd7648a8
fonte
O Netscope é minha ferramenta diária para os modelos Caffe.
fonte