신경망에 관한 주제에 관한 논문을 쓰거나 프레젠테이션을 할 때, 일반적으로 네트워크 아키텍처를 시각화합니다.
공통 아키텍처를 자동으로 시각화하는 좋은 방법과 간단한 방법은 무엇입니까?
신경망에 관한 주제에 관한 논문을 쓰거나 프레젠테이션을 할 때, 일반적으로 네트워크 아키텍처를 시각화합니다.
공통 아키텍처를 자동으로 시각화하는 좋은 방법과 간단한 방법은 무엇입니까?
답변:
신경망 이 Tensorflow 그래프로 제공되면 TensorBoard로이 그래프를 시각화 할 수 있습니다 .
MNIST CNN의 모습은 다음과 같습니다.
이름 / 범위 (예 : "dropout", "softmax", "fc1", "conv1", "conv2")를 직접 추가 할 수 있습니다.
다음은 왼쪽 그래프에 관한 것입니다. 오른쪽 절반에있는 4 개의 작은 그래프는 무시합니다.
각 상자는 학습 할 수있는 매개 변수가있는 레이어입니다. 추론을 위해 정보는 아래에서 위로 흐릅니다. 타원은 학습 된 매개 변수를 포함하지 않는 레이어입니다.
상자의 색상은 의미가 없습니다.
점선으로 된 작은 상자 ( "그라데이션", "아담", "저장")의 가치를 잘 모르겠습니다.
최근에 NN 아키텍처를 그리고 SVG를 내보내는 도구 인 NN-SVG를 만들었습니다.
Caffe에서는 caffe / draw.py 를 사용하여 NetParameter 프로토 버퍼 를 그릴 수 있습니다 .
Matlab에서는 view (net)를 사용할 수 있습니다
Keras.js :
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
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)를 실험적으로 지원합니다.
케 라스
keras.utils.vis_utils 모듈은 Keras 모델 (사용은 GraphVIZ)를 플롯하는 유틸리티 기능을 제공합니다
다음은 첫 번째 숨겨진 레이어에 50 개의 뉴런이 있고 104 개의 입력 변수가 필요한 네트워크 모델을 보여줍니다.
plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=True)
Python 패키지 conx
는 net.picture()
SVG, PNG 또는 PIL 이미지를 생성 하는 기능 을 사용 하여 활성화로 네트워크를 시각화 할 수 있습니다 .
Conx는 Keras를 기반으로하며 Keras의 모델에서 읽을 수 있습니다. 각 뱅크의 컬러 맵을 변경할 수 있으며 모든 뱅크 유형을 표시 할 수 있습니다.
드래그 앤 드롭 신경망 시각화 도구 (및 기타)를 연구하고 있습니다. 다음은 LeNet과 유사한 아키텍처의 시각화 예입니다. 팬 아웃 및 팬인 모델도 쉽게 모델링 할 수 있습니다. 웹 사이트 https://math.mit.edu/ennui/를 방문 하십시오.
R에서는 nnet
플롯 함수가 제공되지 않지만 여기에 대한 코드가 제공 됩니다 .
또는 함수 neuralnet
를 특징으로하는 최신 및 IMHO 더 나은 패키지 plot.neuralnet
를 사용할 수 있으므로 다음과 같이하면됩니다.
data(infert, package="datasets")
plot(neuralnet(case~parity+induced+spontaneous, infert))
neuralnet
훨씬 오래되어 r-cran과 함께 제공 nnet
되므로 많이 사용되지 않습니다 nnet
. 그러나 Tensorflow와 같은 패키지에서도 부족한 탄력성 역 전파 를 neuralnet
포함하여 더 많은 훈련 알고리즘이 있으며 하이퍼 파라미터 선택에 훨씬 더 견고하며 전반적으로 더 많은 기능을 가지고 있습니다.
신경망 시각화에 대한 몇 가지 새로운 대안 노력이 있습니다.
이 기사를 참조하십시오 :
놀라운 'AI 뇌 스캔'은 새로운 기술을 배울 때 기계가 보는 것을 보여줍니다.
이러한 접근 방식은 신경망 작동을 시각화하는 데 더 중점을 두지 만 NN 아키텍처는 결과 다이어그램에서 다소 볼 수 있습니다.
예 :
논문 자체는 좋지 않지만 신경망에 대해 잘 모르는 사람들이 자신의 토폴로지가 어떻게 보이는지 보여주는 데 매우 유용합니다. 이 Javascript 라이브러리 (Neataptic)를 사용하면 네트워크를 시각화 할 수 있습니다.
Tensorspace-JS는 네트워크 아키텍처의 3D 시각화를위한 환상적인 도구입니다.
다음은 프로그램 작성 방법에 대한 좋은 게시물입니다.
Netscope 는 Caffe 모델을위한 일상적인 도구입니다.