Community이미지github.com

szcharlesji/tikz-dl-visualizer

딥러닝 개념을 직관 중심의 아름다운 정적 TikZ/pgfplots 그림(PDF 및 PNG로 컴파일)과 함께 설명하고, 중급 딥러닝 학습자를 위한 읽기 가이드를 제공합니다. 슬라이드, 논문, 강의 노트 등에 적합합니다.

tikz-dl-visualizer란 무엇인가요?

이 스킬은 중급 딥러닝 학습자를 대상으로 복잡한 개념(어텐션, 컨볼루션, 역전파, 정규화, 잔차 연결, RNN/LSTM, VAE, 확산 모델, GAN, 대조 학습, 옵티마이저, 손실 함수, 활성화 함수, 임베딩, 에너지 기반 모델 등)을 시각적으로 설명하는 정적 TikZ/pgfplots 그림을 생성합니다. Alfredo Canziani의 NYU 딥러닝 책 스타일을 따라 어두운 회색 배경, ColorBrewer Set3 파스텔 색상, 일관된 색상-역할 매핑(예: 입력은 분홍색, 은닉은 녹색, 손실은 빨간색)을 사용하며, 표준 딥러닝 표기법을 준수합니다. 주요 용도는 슬라이드(PowerPoint, Keynote, Beamer), 논문, 학위 논문, 유인물, 강의 노트 PDF입니다. 스킬은 `assets/dlviz.sty`(색상 팔레트, 표기 매크로, 노드 스타일 포함)와 `assets/examples/` 디렉토리(6가지 원형별 예제 그림과 PNG 미리보기), `scripts/render.py`(PDF/PNG 컴파일 스크립트), 그리고 `references/` 디렉토리(시각 언어, 원형, TikZ 함정에 대한 문서)로 구성됩니다. 워크플로는 1) 전달할 한 가지 통찰 문장 작성, 2) 적절한 시각적 원형 선택, 3) 구체적인 숫자(예: 4개의 토큰, d_k=3) 사용(Python으로 계산), 4) 그림 생성(시작점에서 가장 가까운 예제 복사), 5) 컴파일 및 비평(겹침, 명확성, 색상 일관성 확인, 최소 2-3회 반복)을 거쳐 최종 PNG, PDF, `dlviz.sty`와 함께 읽기 가이드를 제공합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/szcharlesji/tikz-skills/tree/HEAD/skills/tikz-dl-visualizer

Installed? Explore more 이미지 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

TikZ 딥러닝 시각화 도구

당신은 기초(MLP, 역전파, CNN, 트랜스포머 개념)를 이미 알고 있으며 이유를 알고 싶어하는 학생을 위해 그림을 그립니다. 좋은 그림은 장식된 상자 다이어그램이 아니라, 한 가지 아이디어를 한눈에 명확하게 보여주고 두 번째 봤을 때 더 깊은 이해를 줍니다. 스타일은 Alfredo Canziani의 NYU 딥러닝 책을 따릅니다: 어두운 회색 페이지, ColorBrewer Set3 파스텔 색상, 그리고 항상 같은 의미를 가지는 색상.

필요한 모든 것이 번들로 제공됩니다:

  • assets/dlviz.sty: 팔레트(어두움과 밝음), 표기법 매크로, 노드 스타일, pgfplots 모양, 도우미. 처음부터 다시 스타일링하기보다는 항상 이것을 기반으로 구축하십시오. 이것이 모든 그림을 하나의 시각 언어로 유지하는 방법입니다.
  • assets/examples/*.tex (각각 .png 미리보기 포함): 6개의 컴파일되고 검토된 그림, 각 원형별 하나씩. PNG를 보고 목표 품질을 확인하십시오. 가장 가까운 것부터 시작하십시오.
  • scripts/render.py: PDF와 PNG로 컴파일하고 첫 번째 오류만 출력합니다.
  • references/visual-language.md: 색상 역할, 요소 어휘, 표기법, 타이포그래피 및 레이아웃 규칙. 세션에서 첫 번째 그림을 그리기 전에 읽으십시오.
  • references/archetypes.md: 어떤 그림이 어떤 개념에 맞는지, 그리고 그림에서 흔히 틀리는 DL 사실 표를 포함합니다. 개념에 해당하는 행을 읽으십시오.
  • references/tikz-gotchas.md: 우리가 겪은 컴파일 오류와 레이아웃 함정 및 수정 방법. 컴파일이 안 되거나 보기가 이상할 때 읽으십시오.

워크플로우

1. 하나의 아이디어 찾기

TikZ를 만지기 전에, 그림이 전달해야 할 통찰을 한 문장으로 쓰십시오. 학생이 보게 될 것으로 표현하십시오. 예를 들어:

  • "어텐션의 각 출력 행은 값 행의 가중 평균이며, 가중치는 소프트맥스 처리된 점수 행렬의 한 행입니다."
  • "모멘텀은 진동하는 기울기 성분을 상쇄하고 일관된 성분을 누적합니다."
  • "잔차 블록은 수정값 F(x)만 학습하면 됩니다. x는 변경되지 않고 전달되기 때문입니다."

그 문장을 쓸 수 없다면, 아직 무엇을 그릴지 모르는 것입니다. 학생이 가질 가능성이 가장 높은 오해가 무엇인지 스스로에게 질문하고 그 오해를 겨냥한 그림을 만드십시오. 개념이 넓다면(예: "트랜스포머"), 가장 통찰력 있는 단일 조각을 선택하여 말하고, 나머지는 후속 그림으로 제안하십시오. 모든 것을 하나의 그림에 집어넣지 마십시오.

2. 원형 선택

references/archetypes.md를 열고 그 문장을 시각화할 수 있는 형식을 선택하십시오. 주요 원형은 다음과 같습니다:

원형보여주는 것예제 파일
파이프라인 / 계산 그래프데이터 흐름, 무엇이 무엇을 먹이는지autoencoder.tex
행렬 / 히트맵 레이아웃텐서 형태와 곱, 가중치attention.tex
격자 + 수용 필드지역적, 슬라이딩, 공유 연산convolution.tex
매개변수 공간 기하학최적화 경로, 손실 등고선momentum.tex
작은 다중 그래프함수 또는 설정 비교activations.tex
전/후 공간 왜곡레이어가 입력 공간에 하는 일linear-map.tex

두 원형을 결합하는 것은 괜찮습니다(작은 히트맵 삽입이 있는 파이프라인). 하지만 하나가 주를 이루어야 합니다.

3. 구체적으로 만들기

추상화는 직관의 적입니다. 작고 구체적인 크기(4개의 토큰, d_k = 3, 5x5 입력, 2-D 매개변수)를 사용하고 그것들이 무엇을 나타내는지 말하십시오. 실제 숫자가 자리 표시자보다 낫습니다: 합이 1이 되는 가중치, 출력을 직접 확인할 수 있는 컨볼루션, 옵티마이저가 실제로 하는 궤적.

숫자는 Python으로 계산하십시오. 절대 손이나 머리로 하지 마십시오. 짧은 스크립트(uv run --with numpy python -를 통한 numpy 또는 일반 Python)를 실행한 다음 좌표나 값을 .tex에 붙여넣으십시오. 어떻게 생성되었는지 주석을 남기십시오. 손으로 만든 "예시" 숫자는 잘못된 그림의 원인입니다: 합이 1.1인 소프트맥스 행, 입력과 일치하지 않는 컨볼루션 출력.

4. 그림 작성

출력 폴더(사용자가 지정한 경우 해당 폴더, 그렇지 않으면 현재 작업 디렉토리)에 <concept>.tex를 다음을 시작점으로 만드십시오:

% 캡션: <2-3 문장: 무엇을 보고 무엇을 보여주는지>
\documentclass[tikz,border=8pt]{standalone}
\usepackage[dark]{dlviz}   % [light]는 백서/슬라이드용
\begin{document}
\begin{tikzpicture}
  ...
\end{tikzpicture}
\end{document}

그림이 위치할 곳에 따라 테마를 선택하십시오: 슬라이드, 화면 및 책과 일치해야 한다고 사용자가 말한 모든 것에는 어두움(책 스타일); 논문, 학위 논문, 강의 노트 PDF, 숙제, 인쇄와 같은 종이 형태의 대상에는 밝음; 또는 요청이 있을 때. 어느 쪽도 힌트가 없으면 어두움을 사용하고 [light]를 언급하십시오. 색상 역할은 두 테마에서 유지되므로 전환은 한 단어입니다.

가장 중요한 원칙(세부 사항은 references/visual-language.md에 있음):

  • 색상 = 역할, 일관되게. 입력 x는 분홍색, 은닉 h는 녹색, 예측 ỹ는 보라색, 목표 y는 파란색, 잠재 z는 주황색, 비용/손실/에너지는 빨간색, 인코더는 라벤더, 디코더는 아쿠아, 예측기는 노란색, 매개변수는 금색. 그림, 레이블 및 방정식(\pink{\vx})에서 기호에 동일한 색상을 사용하십시오. 이렇게 하면 읽지 않고도 눈이 그림과 수학을 연결할 수 있습니다. 그림당 최대 약 5가지 색상; 구조적인 모든 것은 흰색/회색입니다.
  • 대비에는 두 가지 색조가 필요합니다. 그림이 두 조건(일반 대 잔차, SGD 대 모멘텀, BatchNorm 대 LayerNorm)을 비교할 때 각 조건에 고유한 색조를 부여하고 해당 조건의 곡선, 레이블 및 하이라이트에 해당 색조를 일관되게 사용하십시오. 둘 다 그래디언트라는 이유만으로 둘 다 빨간색으로 그리지 마십시오. 빨간색은 공유된 것(손실, 역방향 방향)을 표시하고 비교는 한눈에 읽을 수 있어야 합니다.
  • 크기를 시각화하십시오. 양이 증가하거나 감소하면(그래디언트 노름, 어텐션 가중치, 분산) 인쇄된 숫자뿐만 아니라 그림 자체에 인코딩하십시오: 단계별로 얇아지는 선 두께, 채우기 농담, 화살표 길이, 점 크기. 대응 관계에도 잉크를 할애하십시오: 각 샘플에서 도착 지점까지 가는 얇은 선은 두 개의 분리된 구름보다 변환을 더 잘 보여줍니다.
  • 색상 코드로 수학을 보여주십시오. 정의 방정식을 그림 안에, 보통 아래쪽에, 각 항을 시각적 대응물과 같은 색상으로 넣으십시오.
  • 모든 것에 형태를 표시하십시오. 텐서의 형태를 흐릿한 dim 스타일(\(\R^{n\times d_k}\))로 레이블하십시오. 형태 관리(Shape bookkeeping)는 DL 연산을 이해하는 데 절반입니다.
  • 하나의 예제를 끝까지 따라가십시오. 나타나는 모든 곳에서 하나의 행, 하나의 패치 또는 하나의 단계를 강조(hl 스타일, 빨간색 윤곽선)하여 학생이 단일 계산을 처음부터 끝까지 추적할 수 있게 하십시오.
  • 드물고 제자리에 주석을 다십시오. 얇은 지시선과 함께 설명하는 내용 옆에 두세 개의 짧은 기울임꼴 주석(annot). 범례 상자 대신 직접 레이블. 전체 제목 없음(캡션이 그 역할을 함). 다중 패널 그림은 각 패널 위에 충분한 공간을 두고 annot 스타일로 "(a) 일반: (\vx_l = F_l(\vx_{l-1}))"와 같은 짧은 패널 레이블을 사용하십시오.
  • 최소 잉크. 그림자, 그라데이션, 그 자체를 위한 3D 또는 장식 아이콘은 없습니다. 채우기는 선 색상의 연한 농담입니다(cell=colorX가 이 작업을 수행합니다).
  • 표준 표기법. 굵은 소문자 벡터, 굵은 대문자 행렬, 보통 스칼라; 매크로 사용(\vx, \mW, \vytld, \softmax). 행 대 열 규칙은 인쇄하는 방정식과 일치해야 합니다(어텐션은 Vaswani et al.에서처럼 토큰당 행 Q, K, V를 사용합니다).

5. 컴파일하고 살펴보기

python <skill-dir>/scripts/render.py path/to/concept.tex

dlviz.sty를 그림 옆에 복사하여 폴더를 어디서든 다시 컴파일할 수 있게 하고, concept.pdf와 concept.png를 씁니다. 컴파일에 실패하면 첫 번째 오류를 출력합니다. references/tikz-gotchas.md를 확인하십시오. 패키지가 누락되면 tlmgr 명령을 출력합니다. 사용자에게 알리고 허락 없이 머신에 설치를 실행하지 마십시오.

그런 다음 PNG를 열고 리뷰어처럼 비평하십시오. 컴파일이 끝이 아닙니다. assets/examples의 모든 그림은 확인 후 최소 한 번의 수정이 필요했습니다. 확인하십시오:

  1. 겹치거나 닿는 것이 있습니까: 선 위의 텍스트, 레이블을 통한 화살표, 노드 경계에 닿는 텍스트, 축 또는 패널 가장자리에서 잘린 레이블, 한 패널의 주석이 다음 패널의 레이블을 침범합니까? 썸네일을 신뢰하지 말고 밀집된 영역을 확대하십시오(magick in.png -crop WxH+X+Y out.png로 PNG를 자르십시오).
  2. 3초 안에 하나의 아이디어를 볼 수 있습니까? 눈이 가장 먼저 닿는 곳은 어디입니까? 그것이 올바른 것입니까?
  3. 모든 색상이 제 역할을 하고 있으며, 각 역할이 모든 곳에서 동일하게 색칠되었습니까?
  4. 모든 숫자, 모양 및 공식이 정확합니까(references/archetypes.md의 사실 표 참조)?
  5. 간격이 균일하고 정렬이 의도적입니까?

모든 답변이 '예'가 될 때까지 수정하고 다시 컴파일하십시오. 2~3회 반복은 정상입니다.

6. 제공

사용자에게 다음을 제공하십시오:

  1. PNG(파일을 표시하거나 보낼 수 있는 경우 인라인 표시)와 .tex, .pdf 및 dlviz.sty의 경로.
  2. 읽기 가이드: 읽어야 할 순서대로 그림을 안내하는 4-8문장 ("Q의 강조 표시된 행에서 시작..."), 각 시각적 요소를 수학과 연결하고, 마지막에 핵심 내용으로 끝맺음. 중급 학생을 위해 작성: 뉴런이 무엇인지 다시 설명하지 말고, 메커니즘이 작동하는 이유를 설명하십시오.
  3. 적응 방법에 대한 한 줄: [light]로 전환, 크기 변경, 또는 자연스러운 후속 그림(예: "다음은 멀티헤드 버전?").

.tex 상단의 % 캡션: 주석을 그림과 동기화된 상태로 유지하십시오. 이것은 사용자가 문서에서 그림 아래에 붙여넣을 캡션입니다.

관련 스킬

이 스킬은 정적 그림을 만듭니다: 아이디어당 하나의 PDF/PNG, 슬라이드, 논문 및 인쇄용. 두 개의 관련 스킬이 동일한 dlviz.sty와 시각 언어를 공유합니다:

  • tikz-live: 동일한 종류의 그림을 대화형(드래그, 슬라이드, 호버, 재생) 독립형 웹 페이지로 만듭니다. 독자가 무언가를 변경하고 메커니즘이 반응하는 것을 보아야 할 때, 또는 사용자가 대화형, 탐색 가능 또는 브라우저에서 애니메이션 그림을 요청할 때 사용하십시오.
  • tikz-explorer-book: 개념 지도와 그림 장으로 구성된 강의나 분야의 전체 웹 북; 정적 그림에는 이 스킬을, 라이브 그림에는 tikz-live를 사용합니다.

요청이 특이한 경우

  • 사용자 자신의 LaTeX 문서 또는 프리앰블. 사용자의 표기법과 색상이 있으면 일치시키십시오. 여전히 dlviz.sty의 스타일을 \input하거나 필요한 부분만 복사할 수 있습니다. 페이지 색상을 재정의하지 마십시오.
  • 슬라이드(Beamer). 독립형 그림을 만들고 \includegraphics 사용법을 보여주십시오. 단계별 빌드를 위해 레이어에 \only<n> / \visible<n>을 넣거나 여러 개의 독립형 파일(step-1, step-2...)을 만드십시오.
  • 시간에 따른 애니메이션 또는 프로세스. 인쇄 및 슬라이드의 경우, 하나의 그림에서 작은 다중(t = 0, 1, 2, ..., T)을 선호하십시오. 패널 시퀀스는 애니메이션이 숨기는 추세를 보여줍니다. 화면에서 읽고 독자가 단계별로 또는 스크럽하여 보아야 한다면 대신 tikz-live를 사용하십시오.
  • PowerPoint / Keynote. PNG(200 dpi로 렌더링, 전체 슬라이드 너비에서 선명함) 또는 PDF를 삽입하십시오. 흰색 슬라이드 템플릿에는 [light]를 사용하십시오.
  • 논문 그림. [light]를 사용하고 논문에서 해당 방정식을 명시하면 그림 내 방정식을 생략하고, 폰트를 논문의 폰트와 일치시키십시오(dlviz는 어떤 폰트 패키지도 로드하지 않으므로 문서 폰트가 사용됩니다).
  • 3D 표면. pgfplots \addplot3[surf]를 view={...} 및 흐릿한 컬러맵(colormap name=dlheat)과 함께 사용하고, 등고선 플롯이 더 잘 설명할지 물어보십시오. 일반적으로 그렇습니다.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

szcharlesji/tikz-explorer-book

Build a figure-first "explorer" web book for a course, syllabus, reading list or research field. The home page is an interactive Obsidian-style concept map with a guided tour; it leads into chapters, each built around 2–3 computed TikZ figures with reading-guide captions, where the key mechanism of a chapter can be a live figure the reader drags, slides or hovers (tikz-live) while static figures come from tikz-dl-visualizer. The result is published as one web page. Use this skill whenever someone wants a visual companion, illustrated notes, a study guide, a "book", a concept map or mind map of a field, or a big-picture overview that connects the ideas and papers everyone should know before going deep. Typical asks are "make a book for this course", "help me see the big picture of X", "illustrated guide to the papers on this syllabus", "something like Obsidian for generative models", "chapters with diagrams for each week". Use it even if they never say TikZ, and especially when they say diagrams and intuition

szcharlesji/tikz-live

Build an interactive, explorable figure in the TikZ/dlviz style (Canziani NYU-DL look) where the reader drags points, moves sliders, hovers rows or plays steps, while every static part stays real LaTeX typography. The static scaffold is compiled from TikZ, a small JS spec draws the live part in the same coordinates, and the build outputs one self-contained HTML page plus PNG snapshots to check. Use this whenever someone wants an interactive, live, explorable, draggable, animated, "play with it", slider or hover version of a technical or ML/DL diagram (optimizers, attention, convolution, linear maps, loss landscapes, sampling, normalization...), wants to make an existing TikZ figure interactive, or wants interactive figures for a web book, course notes, a blog or an artifact. For a static figure (slides, papers, print), use tikz-dl-visualizer; for a whole illustrated web book with many figures, use tikz-explorer-book, which builds its live figures with this skill.

관련 스킬