使用 Tikz 编写带节点矩阵的神经网络方程

使用 Tikz 编写带节点矩阵的神经网络方程

我试图为我的一些学生编写一些培训材料,以帮助他们理解神经网络。挑战通常是将图形/节点图与正在计算的底层矩阵/张量连接起来。我发现了一个非常漂亮的图表,但我不清楚如何做这样的事情。我仍然是一个非常新手的 tikz 用户,但我正在尝试创建一组最小的图表,以便我可以调整它们并在过程中学习。

但我发现这里有一张我认为可能真的很有用的图片。我想知道是否有人可以指出如何创建这样的东西。这不像我们通常看到的网络示例,所以我在 Texexamples.net 等网站上找不到这样的例子。

这是图片。

在此处输入图片描述

我更喜欢这个图,因为它将底层矩阵/张量结构连接到节点。任何有关创建此图的帮助都将不胜感激。

答案1

神经网络矩阵图

\documentclass{article}
\usepackage{amsmath}   % needed for \text
\usepackage{tikz}      % needed for all the drawing
\usetikzlibrary{calc}  % needed for coordinate calculations
\newcommand{\grid}[3]{%
    \begin{tikzpicture}[baseline=(current bounding box)]
        \foreach \x in {1,...,#2} {
            \foreach \y in {1,...,#1} {
                \draw[fill=#3, color=#3] ($(0.4*\x, 0.4*\y)$) circle[radius=0.15cm];
            }
        }
        \draw (0.2, 0.2) rectangle ($(0.4*#2, 0.4*#1) + (0.2, 0.2)$);
    \end{tikzpicture}
}
\begin{document}
    \[
        \text{score} = 
        \underbrace{\grid{1}{3}{blue}}_{\mathbf{w}^\top} 
        \sigma \left(\underbrace{\grid{3}{4}{blue}}_{\mathbf{U}}
        \sigma\left( \underbrace{\grid{4}{6}{blue}}_{\mathbf{V}}
        \underbrace{\grid{6}{1}{red}}_{x}\right)\right)
    \]
\end{document}

以下是我的做法。粗略地说,定义的宏\grid{rows}{cols}{colour}会绘制一个给定颜色的圆圈rowsxcols矩阵。它会自动放入一个框中,然后由于每个矩阵都是自己的tikzpicture环境,因此可以像任何其他数学命令一样在方程中使用。

相关内容