Podczas pisania pracy / prezentacji na temat sieci neuronowych zwykle wizualizuje się architekturę sieci.
Jakie są dobre / proste sposoby automatycznej wizualizacji popularnych architektur?
machine-learning
neural-network
deep-learning
visualization
Martin Thoma
źródło
źródło
Odpowiedzi:
Tensorflow, Keras, MXNet, PyTorch
Jeśli sieć neuronowa jest podana jako wykres Tensorflow, możesz zwizualizować ten wykres za pomocą TensorBoard .
Oto jak wygląda MNIST CNN:
Możesz dodawać nazwy / zakresy (takie jak „dropout”, „softmax”, „fc1”, „conv1”, „conv2”).
Interpretacja
Poniższe informacje dotyczą tylko lewego wykresu. Ignoruję 4 małe wykresy po prawej stronie.
Każde pudełko jest warstwą z parametrami, których można się nauczyć. W celu wnioskowania informacje przepływają od dołu do góry. Elipsy to warstwy, które nie zawierają wyuczonych parametrów.
Kolor skrzynek nie ma znaczenia.
Nie jestem pewien wartości małych przerywanych pól („gradienty”, „Adam”, „zapisz”).
źródło
Niedawno stworzyłem narzędzie do rysowania architektur NN i eksportowania SVG, o nazwie NN-SVG
źródło
W Caffe możesz użyć caffe / draw.py do narysowania protobuffera NetParameter:
W Matlabie możesz używać widoku (netto)
Keras.js :
źródło
Dodałbym wizualizacje ASCII przy użyciu keras-sekwencyjnego-ascii (zastrzeżenie: jestem autorem).
Mała sieć dla CIFAR-10 (z tego samouczka ) to:
W przypadku VGG16 byłoby to:
źródło
Istnieje projekt open source o nazwie Netron
źródło
Oto jeszcze jeden sposób - dotnets , wykorzystujące Graphviz , mocno zainspirowane tym postem Thiago G. Martinsa.
źródło
Keras
Moduł keras.utils.vis_utils zapewnia funkcje użytkowe wykreślić modelu Keras (użyciu graphviz)
Poniżej pokazano model sieci, w którym pierwsza ukryta warstwa ma 50 neuronów i oczekuje 104 zmiennych wejściowych.
źródło
Pakiet Python
conx
może wizualizować sieci z aktywacjami z funkcjąnet.picture()
tworzenia obrazów SVG, PNG lub PIL, takich jak:Conx jest zbudowany na Keras i może czytać w modelach Keras. Mapa kolorów w każdym banku może zostać zmieniona i może wyświetlać wszystkie typy banków.
Więcej informacji można znaleźć na stronie : http://conx.readthedocs.io/en/latest/
źródło
Pracowałem nad wizualizatorem sieci neuronowej typu przeciągnij i upuść (i nie tylko). Oto przykład wizualizacji architektury podobnej do LeNet. Modele z funkcją Fan-Out i Fan-In również można łatwo modelować. Możesz odwiedzić stronę internetową https://math.mit.edu/ennui/
źródło
W języku R
nnet
nie ma funkcji drukowania, ale kod do tego jest podany tutaj .Alternatywnie możesz użyć nowszego i lepszego pakietu IMHO o nazwie,
neuralnet
który zawieraplot.neuralnet
funkcję, dzięki czemu możesz po prostu:neuralnet
nie jest używany tak często,nnet
ponieważnnet
jest znacznie starszy i jest dostarczany z r-cran. Aleneuralnet
ma więcej algorytmów szkoleniowych, w tym sprężystą propagację wsteczną, której brakuje nawet w pakietach takich jak Tensorflow, i jest znacznie bardziej odporny na wybory hiperparametrów i ma ogólnie więcej funkcji.źródło
Istnieje kilka nowatorskich alternatywnych sposobów wizualizacji sieci neuronowej.
Zobacz te artykuły:
Oszałamiające „skany mózgu AI” pokazują, jakie maszyny widzą, gdy uczą się nowych umiejętności
Wewnątrz „mózgu” AI - Jak wygląda uczenie maszynowe?
Podejścia te są bardziej zorientowane na wizualizację działania sieci neuronowej, jednak architektura NN jest również nieco widoczna na wynikowych diagramach.
Przykłady:
źródło
Nie perfekcyjnie dla artykułów, ale bardzo przydatne do pokazania ludziom, którzy nie wiedzą dużo o sieciach neuronowych, jak może wyglądać ich topologia. Ta biblioteka JavaScript (Neataptic) umożliwia wizualizację sieci:
źródło
Możesz przeczytać popularny artykuł Zrozumienie sieci neuronowych poprzez głęboką wizualizację, który omawia wizualizację sieci splotowych. Jego implementacja nie tylko wyświetla każdą warstwę, ale także przedstawia aktywacje, ciężary, dekonwolucje i wiele innych rzeczy, które są szczegółowo omówione w artykule. Kod jest włączony
caffe'
. Interesujące jest to, że możesz zastąpić wstępnie wyszkolony model własnym.źródło
Tensorspace-JS to fantastyczne narzędzie do wizualizacji architektury sieci w 3D:
https://tensorspace.org/
a tutaj jest miły post o tym, jak napisać program:
https://medium.freecodecamp.org/tensorspace-js-a-way-to-3d-visualize-neural-networks-in-browsers-2c0afd7648a8
źródło
Netscope to moje codzienne narzędzie do modeli Caffe.
źródło