Dot 언어로 작성된 파일을 Python pydot으로 이미징

Chainer의 extensions.dump_graph를 이용하면 Dot 언어로 기술된 파일을 출력해 준다. 이 Dot 파일은 graphviz로 화상화할 수 있지만, 이번은 Python을 이용해 화상화한다.

운영 환경


  • 우분투 16.04
  • Python 3.5.2
  • graphviz
  • pydot

  • 사용 예



    다음은 MNIST 런타임에 생성된 Dot 파일을 시각화한 결과



    코드



    여러 개의 Dot 파일을 읽고 싶었기 때문에 입력은 Dot 파일의 파일 경로 목록입니다. ext는 사용하는 확장자로, png, pdf, svg 형식에서의 출력에 대응하고 있다.
    import os
    import pydot
    
    def main(name_list, ext):
        for name in name_list:
            # dot言語で記述されたファイルを読み込む
            (graph,) = pydot.graph_from_dot_file(name)
            # 保存用の名前を抽出する
            name, _ = os.path.splitext(os.path.basename(name))
            # 形式を選択して保存する
            if(ext == 'png'):
                graph.write_png(getFilePath(args.out_path, name, '.png'))
            elif(ext == 'pdf'):
                graph.write_pdf(getFilePath(args.out_path, name, '.pdf'))
            elif(ext == 'svg'):
                graph.write_svg(getFilePath(args.out_path, name, '.svg'))
            else:
                print('[ERROR] ext option miss:', args.ext)
    
    getFilePath 는 os.path.join 의 오레오레래퍼이므로 불필요한 경우는 대체해 문제 없음.
    def getFilePath(folder, name, ext):
        if not os.path.isdir(folder):
            os.makedirs(folder)
    
        return os.path.join(folder, name + ext)
    

    좋은 웹페이지 즐겨찾기