신경망 아키텍처를 어떻게 시각화합니까?


79

신경망에 관한 주제에 관한 논문을 쓰거나 프레젠테이션을 할 때, 일반적으로 네트워크 아키텍처를 시각화합니다.

공통 아키텍처를 자동으로 시각화하는 좋은 방법과 간단한 방법은 무엇입니까?




1
딥 러닝 시각화 방법 (수동 및 자동)에 대한 설문 조사를 통해 복잡한 신경망의 간단한 다이어그램을 작성했습니다 . 이 스레드에서 많은 영감과 링크를 얻었습니다-thx!
Piotr Migdal

답변:


25

Tensorflow, Keras, MXNet, PyTorch

신경망 이 Tensorflow 그래프로 제공되면 TensorBoard로이 그래프를 시각화 할 수 있습니다 .

MNIST CNN의 모습은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

이름 / 범위 (예 : "dropout", "softmax", "fc1", "conv1", "conv2")를 직접 추가 할 수 있습니다.

해석

다음은 왼쪽 그래프에 관한 것입니다. 오른쪽 절반에있는 4 개의 작은 그래프는 무시합니다.

각 상자는 학습 할 수있는 매개 변수가있는 레이어입니다. 추론을 위해 정보는 아래에서 위로 흐릅니다. 타원은 학습 된 매개 변수를 포함하지 않는 레이어입니다.

상자의 색상은 의미가 없습니다.

점선으로 된 작은 상자 ( "그라데이션", "아담", "저장")의 가치를 잘 모르겠습니다.


그것은 conv1, conv2 등과 같은 이름을 피하려고 노력하고 있습니다. 나는 나중에 CONV로 conv의 모든 이름을 만들고 싶습니다. 어떻게해야합니까 ??
Sudip Das

+1. TF만을위한 것은 아닙니다 : MXNetPytorch 도 약간의 지원을합니다
Jakub Bartczuk

@SudipDas 코드의 이름을 레이어에 추가 할 수 있으며, 플롯 할 때 표시됩니다.

각 레이어의 이름을 "CONV"로 표시하는 방법, 각 레이어의 "CONV"로 작성하면 오류가 발생합니다. 각 레이어에 tf 규칙과 같은 고유 한 이름이 있어야하지만, 알고 싶습니다. 이 문제를 극복하는 다른 방법이 있습니까 ?? @ 벤
Sudip Das

1
@onof 링크를 수정했습니다
Martin Thoma

22

최근에 NN 아키텍처를 그리고 SVG를 내보내는 도구 인 NN-SVG를 만들었습니다.

여기에 이미지 설명을 입력하십시오


1
SVG 다운로드가 작동하지 않습니다
이미지

1/23/19에서 작동합니다. 여전히 문제가있는 경우 언제든지 문제를여십시오.
Alex Lenail

1
이것이 바로 정답입니다
ArtificiallyIntelligence

멋진 도구. 그러나 AlexNet 스타일에서 텐서의 치수가 잘못 표시됨 (폭 및 높이 치수)
FlySoFast


11

keras-sequential-ascii를 사용하여 ASCII 시각화를 추가 할 것입니다 (면책 조항 : 저자입니다).

CIFAR-10의 소규모 네트워크 ( 이 튜토리얼에서 제공 )는 다음과 같습니다.

       OPERATION           DATA DIMENSIONS   WEIGHTS(N)   WEIGHTS(%)

           Input   #####     32   32    3
          Conv2D    \|/  -------------------       896     2.1%
            relu   #####     30   30   32
    MaxPooling2D   Y max -------------------         0     0.0%
                   #####     15   15   32
          Conv2D    \|/  -------------------     18496    43.6%
            relu   #####     13   13   64
    MaxPooling2D   Y max -------------------         0     0.0%
                   #####      6    6   64
         Flatten   ||||| -------------------         0     0.0%
                   #####        2304
           Dense   XXXXX -------------------     23050    54.3%
         softmax   #####          10

VGG16의 경우 다음과 같습니다.

       OPERATION           DATA DIMENSIONS   WEIGHTS(N)   WEIGHTS(%)

          Input   #####      3  224  224
     InputLayer     |   -------------------         0     0.0%
                  #####      3  224  224
  Convolution2D    \|/  -------------------      1792     0.0%
           relu   #####     64  224  224
  Convolution2D    \|/  -------------------     36928     0.0%
           relu   #####     64  224  224
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####     64  112  112
  Convolution2D    \|/  -------------------     73856     0.1%
           relu   #####    128  112  112
  Convolution2D    \|/  -------------------    147584     0.1%
           relu   #####    128  112  112
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    128   56   56
  Convolution2D    \|/  -------------------    295168     0.2%
           relu   #####    256   56   56
  Convolution2D    \|/  -------------------    590080     0.4%
           relu   #####    256   56   56
  Convolution2D    \|/  -------------------    590080     0.4%
           relu   #####    256   56   56
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    256   28   28
  Convolution2D    \|/  -------------------   1180160     0.9%
           relu   #####    512   28   28
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   28   28
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   28   28
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    512   14   14
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   14   14
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   14   14
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   14   14
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    512    7    7
        Flatten   ||||| -------------------         0     0.0%
                  #####       25088
          Dense   XXXXX ------------------- 102764544    74.3%
           relu   #####        4096
          Dense   XXXXX -------------------  16781312    12.1%
           relu   #####        4096
          Dense   XXXXX -------------------   4097000     3.0%
        softmax   #####        1000

11

Netron 이라는 오픈 소스 프로젝트가 있습니다

Netron은 신경망, 딥 러닝 및 머신 러닝 모델 뷰어입니다.

Netron은 ONNX (.onnx, .pb), Keras (.h5, .keras), CoreML (.mlmodel) 및 TensorFlow Lite (.tflite)를 지원합니다. Netron은 Caffe (.caffemodel), Caffe2 (predict_net.pb), MXNet (-symbol.json), TensorFlow.js (model.json, .pb) 및 TensorFlow (.pb, .meta)를 실험적으로 지원합니다.

여기에 이미지 설명을 입력하십시오



8

케 라스

keras.utils.vis_utils 모듈은 Keras 모델 (사용은 GraphVIZ)를 플롯하는 유틸리티 기능을 제공합니다

다음은 첫 번째 숨겨진 레이어에 50 개의 뉴런이 있고 104 개의 입력 변수가 필요한 네트워크 모델을 보여줍니다.

plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=True)

여기에 이미지 설명을 입력하십시오


LaTex 호환 형식으로 사용할 수 있습니까?
pushpen.paul

8

Python 패키지 conxnet.picture()SVG, PNG 또는 PIL 이미지를 생성 하는 기능 을 사용 하여 활성화로 네트워크를 시각화 할 수 있습니다 .

여기에 이미지 설명을 입력하십시오

Conx는 Keras를 기반으로하며 Keras의 모델에서 읽을 수 있습니다. 각 뱅크의 컬러 맵을 변경할 수 있으며 모든 뱅크 유형을 표시 할 수 있습니다.

자세한 내용은 http://conx.readthedocs.io/en/latest/를 참조하십시오.


6

드래그 앤 드롭 신경망 시각화 도구 (및 기타)를 연구하고 있습니다. 다음은 LeNet과 유사한 아키텍처의 시각화 예입니다. LeNet과 유사한 아키텍처의 시각화 팬 아웃 및 팬인 모델도 쉽게 모델링 할 수 있습니다. 웹 사이트 https://math.mit.edu/ennui/를 방문 하십시오.



1
확인해 주셔서 감사합니다. 예,이 버그는 최근에 나타 났으며 Chrome에서 WebGL을 최근에 변경 한 것으로 보입니다. 모든 것이 Firefox에서 작동합니다. 더 알고 있으면 업데이트하겠습니다.
제시

tks, 당신의 visualiser는 훌륭합니다, tf playground보다 큼 보입니다 :)
datdinhquoc

1
감사합니다! 문제 나 아이디어가 있으면 알려주세요. 코드 생성과 같은 재미있는 것들도 있습니다!
제시

5

R에서는 nnet플롯 함수가 제공되지 않지만 여기에 대한 코드가 제공 됩니다 .

또는 함수 neuralnet를 특징으로하는 최신 및 IMHO 더 나은 패키지 plot.neuralnet를 사용할 수 있으므로 다음과 같이하면됩니다.

data(infert, package="datasets")
plot(neuralnet(case~parity+induced+spontaneous, infert))

신경망

neuralnet훨씬 오래되어 r-cran과 함께 제공 nnet되므로 많이 사용되지 않습니다 nnet. 그러나 Tensorflow와 같은 패키지에서도 부족한 탄력성 역 전파neuralnet포함하여 더 많은 훈련 알고리즘이 있으며 하이퍼 파라미터 선택에 훨씬 더 견고하며 전반적으로 더 많은 기능을 가지고 있습니다.



4

신경망 시각화에 대한 몇 가지 새로운 대안 노력이 있습니다.

이 기사를 참조하십시오 :

놀라운 'AI 뇌 스캔'은 새로운 기술을 배울 때 기계가 보는 것을 보여줍니다.

AI '두뇌'내부-머신 러닝은 어떤 모습입니까?

이러한 접근 방식은 신경망 작동을 시각화하는 데 더 중점을 두지 만 NN 아키텍처는 결과 다이어그램에서 다소 볼 수 있습니다.

예 :

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


21
우리가 여기에서 무엇을 볼 수 있는지 설명하십시오. 아름답게 보이지만 멋진 이미지가 네트워크 작동을 이해하는 방법을 이해하지 못합니다.
Martin Thoma

"팬시 이미지"라는 용어를 사용하는 것이 마음에 들지 않습니다. @Martin
VividD

9
나는 당신을 공격하는 것을 의미하지는 않았지만 실제로 내 질문에 대답하지 않고 지나치게 방어적인 대답은 그 자체를 말합니다. - "레고 박스"다이어그램에 "해석"부분을 추가했습니다.
Martin Thoma

1
그건 그렇고 : 두 번째 링크가 죽었습니다.
Martin Thoma

4
@MartinThoma 그것은 분명히 데이터 아트가 아니라 데이터 아트입니다 ( lisade Charlottecharlotte.github.io/2015/12/19/… ).
Piotr Migdal

3

논문 자체는 좋지 않지만 신경망에 대해 잘 모르는 사람들이 자신의 토폴로지가 어떻게 보이는지 보여주는 데 매우 유용합니다. 이 Javascript 라이브러리 (Neataptic)를 사용하면 네트워크를 시각화 할 수 있습니다.

여기에 이미지 설명을 입력하십시오


3

컨볼 루션 네트의 시각화에 대해 설명하는 심층 시각화통한 신경망 이해 라는 인기있는 논문을 읽을 수 있습니다 . 이의 구현 은 각 계층을 표시 할뿐만 아니라 활성화, 가중치, 디컨 볼 루션 및이 백서에서 자세히 논의 된 다른 많은 것들도 묘사합니다. 코드는입니다 caffe'. 흥미로운 부분은 사전 훈련 된 모델을 자신의 것으로 바꿀 수 있다는 것입니다.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.