You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter Notebook神经网络教程图表绘制可行方案咨询

神经网络教程Jupyter Notebook图表绘制方案

问题背景

我正在制作一份神经网络教程的.ipynb文件,需要添加图表。目前采用手绘后iPhone拍照转成.png,通过![BackProp](backprop.png)插入Markdown单元格,但存在以下问题:

  • 分发笔记本时需附带大量媒体文件
  • 修改图表需重新绘制
  • 外观粗糙

尝试过两种方案但均未成功:

  1. LaTeX TikZ绘制:VSCode的.ipynb渲染器支持基础LaTeX公式(如$x^2 + y^2$),但使用tikzpicture代码时出现「ParseError: no such environment: tikzpicture」错误,推测需安装ipython-tikzmagic,但不想让学生额外安装依赖。
    测试代码:
    \begin{tikzpicture}[x=1.5cm, y=1.5cm, >=stealth]
      \draw[->] (-0.5,0) -- (4.5,0) node[right] {$x_1, x_2, \dots, x_N$};
      \draw[->] (0,-0.5) -- (0,2.5);
      \foreach \i in {1,2,...,4}
      {
        \filldraw[black] (\i,0) circle (0.1);
      }
      \draw[black, ->] (2,-0.3) -- (2,0.3);
      \draw[black, ->] (2,0.3) -- (2,1.7) node[above] {$\sum_{i=1}^{N}w_ix_i + b$};
      \draw[black, ->] (2,1.7) -- (2,2.2) node[above] {$\sigma(\cdot)$};
      \draw[->] (2,2.2) -- (4.5,2.2) node[right] {Output};
    \end{tikzpicture}
    
  2. Graphviz:执行brew install graphviz和pip install graphviz后可在Python单元格运行代码,但无法渲染LaTeX标签,且不能在Markdown单元格中直接使用。
    测试代码:
    import graphviz as gv
    
    dot = gv.Digraph()
    
    dot.edge("X6", "X7", label="$\sigma(\cdot)$")
    
    dot
    

需求:寻找无需学生额外安装的开箱即用方案;若无,推荐可行的实现路径。


一、开箱即用方案(无需学生额外安装)

1. Matplotlib绘制(支持LaTeX,默认预装)

Matplotlib是Jupyter Notebook默认预装的库,学生无需额外安装,支持完整LaTeX公式渲染,直接在Python单元格生成嵌入式图表,修改参数即可调整样式,无需外部文件。

示例代码(对应单层感知机流程):

import matplotlib.pyplot as plt

# 开启LaTeX支持
plt.rcParams.update({
    "text.usetex": True,
    "font.family": "serif"
})

fig, ax = plt.subplots(figsize=(8, 4))

# 绘制输入节点
input_nodes = [(1,0), (2,0), (3,0), (4,0)]
for x, y in input_nodes:
    ax.scatter(x, y, s=200, c='black', zorder=5)

# 绘制坐标轴与标注
ax.arrow(-0.5, 0, 5, 0, head_width=0.1, head_length=0.2, fc='black', ec='black')
ax.arrow(0, -0.5, 0, 3, head_width=0.1, head_length=0.2, fc='black', ec='black')
ax.text(4.8, 0, '$x_1, x_2, \\dots, x_N$', fontsize=12)

# 绘制计算流程箭头与标注
ax.arrow(2, -0.3, 0, 0.6, head_width=0.1, head_length=0.1, fc='black', ec='black')
ax.text(2.2, 0.7, '$\\sum_{i=1}^{N}w_ix_i + b$', fontsize=12)
ax.arrow(2, 1, 0, 0.7, head_width=0.1, head_length=0.1, fc='black', ec='black')
ax.text(2.2, 1.8, '$\\sigma(\\cdot)$', fontsize=12)
ax.arrow(2, 2.2, 2.5, 0, head_width=0.1, head_length=0.2, fc='black', ec='black')
ax.text(4.8, 2.2, 'Output', fontsize=12)

# 隐藏边框与刻度,优化视觉效果
ax.spines[['top', 'right', 'left', 'bottom']].set_visible(False)
ax.set_xticks([])
ax.set_yticks([])

plt.tight_layout()
plt.show()

2. Mermaid(Markdown单元格原生支持)

Jupyter Lab 3.0+、VSCode的Jupyter插件等环境原生支持Mermaid语法,可直接在Markdown单元格编写,无需依赖安装,支持基础公式标注(部分环境支持LaTeX语法)。

示例代码(对应你的图表逻辑):

graph LR
    subgraph 输入层
        X1((x₁))
        X2((x₂))
        X3((x₃))
        X4((x₄))
    end
    输入层 -->|$\sum_{i=1}^{N}w_ix_i + b$| 计算节点
    计算节点 -->|$\sigma(\cdot)$| 输出节点
    输出节点 --> Output[Output]

若LaTeX渲染异常,可更新VSCode的Jupyter插件至最新版本,或使用简化的文本标注替代。


二、备选实现路径(需少量前置操作)

1. 预渲染TikZ为SVG嵌入

你可在本地安装ipython-tikzmagic,或使用在线TikZ编辑器将图表渲染为SVG文件,然后将SVG代码直接复制到Markdown单元格中(SVG为纯文本,无需附带外部文件),学生打开笔记本即可直接查看。

2. 机器学习框架可视化工具

若需绘制复杂神经网络结构,可使用torchviz(PyTorch)或tensorboard(TensorFlow),这类工具通常是机器学习教程的标配依赖,学生大概率已安装。

示例(torchviz生成计算图):

import torch
from torchviz import make_dot

# 定义简单模型
x = torch.randn(1, 4)
linear = torch.nn.Linear(4, 1)
sig = torch.nn.Sigmoid()
y = sig(linear(x))

# 生成并显示计算图
make_dot(y, params=dict(linear.named_parameters()))

内容的提问来源于stack exchange,提问作者P i

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 04:35:47