노센스와 함께하는 데이터 분석

데이터과학자, '현장에서 바로 써먹는' 시리즈 저자

(책) 현바데분 with 파이썬

(현바데분with파이썬) 신경망 시각화 방법

노센스 2022. 11. 3. 22:28

독자분께서 도움을 요청하셔서 이렇게 포스팅을 합니다.

"Chapter 7 인공 신경망과 딥 러닝"에서 Keras로 구현한 딥 러닝 모델의 신경망 구조를 시각화할 수 있는 방법에 대해서 설명드리겠습니다.

 

먼저, graphviz라는 패키지를 설치해야합니다.

해당 패키지의 경우 그래프를 쉽게 그릴 수 있게 해주지만 path로 인한 오류가 발생하는 까다로운 녀석이라 꼭 이 순서대로 해주시기 바랍니다.

 

아래 사이트에 가면 graphviz 패키지 windows EXE installer를 다운로드 받을 수 있습니다. 

https://graphviz.org/download/

 

Download

Graph Visualization Software

graphviz.org

가장 최신 버전을 받아 보았습니다.

https://gitlab.com/api/v4/projects/4207231/packages/generic/graphviz-releases/6.0.2/windows_10_cmake_Release_graphviz-install-6.0.2-win64.exe

 

EXE 인스톨러이기 때문에 실행 후 인스톨을 시작합니다. "다음", "동의함"을 선택하고 넘어갑니다.

 

system PATH 부분이 나오는데 여기서 2번째 항목인 "Add Graphviz to the system PATH for all users"를 선택합니다. 현재 윈도우 사용자만 하고 싶을 경우 3번째 항목을 선택해도 상관없습니다. 그리고 "다음"을 클릭합니다.

 

이후에는 "설치"를 시작하게 되며 마치면 "마침" 버튼을 클릭해 종료합니다.

 

정상적으로 설치되고, system PATH가 입력되었다면 아래와 같이 "고급 시스템 설정 → 시스템 속성 → 환경 변수 → 시스템 변수"의 "Path"에 아래와 같이 "C:\Program Files\Graphviz\bin"가 추가된 것을 확인할 수 있습니다.

 

이제 주피터 노트북을 이용해 파이썬을 실행하고, 딥 러닝 모델을 만듭니다.

 

tensorflow와 keras 패키지가 없다면 아래와 같이 패키지를 설치합니다.

(pip 앞에 !를 붙이는 이유는 주피터 노트북 환경에서 pip를 사용하기 위함입니다.)

# tensorflow & keras 설치
!pip install tensorflow
!pip install keras

 

설치한 패키지로 부터 함수를 불러옵니다.

# 딥 러닝용 함수 불러오기
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Input, Dense

 

그리고 딥 러닝 모델을 구축합니다.

아래는 제 책 309페이지에 있는 코드로 입력층에 노드 3개, 은닉층이 2개에 각각 16개의 노드, 출력층에 3개의 노드가 존재하는 신경망 구조입니다.

(단순히 모델의 신경망 그래프만 그릴 것이기 때문에 이후 과정은 필요 없습니다.)

# 모델 구축
model = Sequential()
model.add(Input(3))
model.add(Dense(16, activation = 'relu'))
model.add(Dense(16, activation = 'relu'))
model.add(Dense(3, activation = 'softmax'))

그림으로 나타내면 아래와 같습니다. 이 그림을 파이썬 패키지를 이용해 자동으로 그려보도록 하겠습니다.

 

이를 위해서는 2가지 패키지 설치가 요구되어 아래와 같이 설치합니다.

!pip install ann_visualizer
!pip install graphviz

 

마지막으로 설치한 ann_visualizer 패키지의 visualize 모듈에서 ann_viz() 함수를 불러오고,

이를 이용해 c드라이브에 "network"라는 이름의 pdf 파일로 신경망 그래프가 생성되도록 하겠습니다.

그래프 제목은 "DNN Visualization" 입니다.

from ann_visualizer.visualize import ann_viz
ann_viz(model, filename='c:/network', title='DNN Visualization')

 

위 순서대로 정확히 따라왔다면 graphviz 패키지의 다양한 오류(path, permission denied 등) 없이 정상적으로 아래와 같이 신경망 그래프가 그려졌을 것 입니다.

마지막으로 소스코드를 한 번에 정리해보았습니다.

# tensorflow & keras 설치
!pip install tensorflow
!pip install keras

# 딥 러닝용 함수 불러오기
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Input, Dense

# 모델 구축
model = Sequential()
model.add(Input(3))
model.add(Dense(16, activation = 'relu'))
model.add(Dense(16, activation = 'relu'))
model.add(Dense(3, activation = 'softmax'))

# 신경망 그래프용 추가 패키지 설치
!pip install ann_visualizer
!pip install graphviz

# 신경망 그래프 그리기(pdf파일로 생성됨)
from ann_visualizer.visualize import ann_viz
ann_viz(model, filename='c:/network', title='DNN Visualization')

주피터 노트북 파일과 최종적으로 생성된 pdf 파일도 공유하오니 참고하시기 바랍니다.

 

감사합니다.

 

dnn_visualization_example.ipynb
0.01MB
network.pdf
0.03MB