LaTeX 画神经网络

LaTeX 介绍

  LaTeX 和 C、C++、Java、Python 等编程语言一样,要使用需要安装编译器,如:texlive、ctex等。再配一个文档编译器,方便写代码,如:texstudio、texmaker等。清华镜像提供了方便的安装包:https://mirrors.tuna.tsinghua.edu.cn/#

LaTeX 画一个感知器图

  代码看着很多,但很多都是重复的部分。画图主要使用 LaTeX 中的 tikz 宏包。下面是代码配着注释,(%后面的是注释内容):

% 导言部分
\documentclass{article}

% 导入tikz宏包
\usepackage{tikz}

% 正文
\begin{document}
	\begin{tikzpicture}
		% 结点样式名称/.style={形状,draw=颜色!色度,fill=填充色!色度,清晰度,minimum size=结点大小}
		[L1Node/.style={circle,draw=blue!30, fill=blue!10, very thick, minimum size=8mm},
		L2Node/.style={circle,draw=pink!50, fill=pink!20, very thick, minimum size=8mm}]
		
		% 输入特征值x
		% 函数参数:\node(结点名称)at(结点坐标){结点内容}
		\node(x_1) at (-1.5, -1){$x_0$}; 
		\node(x_2) at (-1.5, -2){$x_1$};
		\node(x_3) at (-1.5, -3){$\vdots\ $};
		\node(x_4) at (-1.5, -4){$x_n$};
		
		% 输入层结点
		% 函数参数:\foreach循环\x依次取1,2,3,4; 
		% 函数参数:\node[结点样式](结点名称)at(结点坐标){结点内容}
		\foreach \x in {1,...,4}
		\node[L1Node] (a_\x) at (0, -\x){};
		
		% 添加权值w
		\node(w1)at(1,-1.5){$w_0$};
		\node(w1)at(1,-2.1){$w_1$};
		\node(w1)at(1,-2.7){$w_2$};
		\node(w1)at(1,-3.3){$w_3$};
		
		% 激活函数f(x)
		\node(v)at(3.6,-2){$f(\sum w_ix_i)$};
		
		% 输出结点
		\node[L2Node] (b_1) at (2.5, -2.5){$\sum$};
		
		% 输出y值
		\node(y_1)at(4.5,-2.5){$y$};
		
		% 连接线部分
		% 输入特征x与输入层结点之间的连线
		\foreach \x in {1,2,3,4}       % 循环\x依次取1,2,3,4
		\draw[-stealth](x_\x)--(a_\x); % \draw[箭头样式](结点起点名称)--(结点终点名称)
		
		% 输入层结点与输出层结点之间的连线
		\foreach \x in {1,...,4}
		\draw[-stealth](a_\x)--(b_1);
		
		% 输出层与输出值y的之间的连线
		\draw[-stealth](b_1)--(y_1);
		
	\end{tikzpicture}
\end{document}

  效果图如下:
在这里插入图片描述

LaTeX 画一个神经网络图

  和上面操作一样,多了结点和连接线。

% 开头导言部分
\documentclass{article}

% 导入tikz包
\usepackage{tikz}

% 正文部分
\begin{document}
	\begin{tikzpicture}
		% 结点样式名称/.style={形状,draw=颜色!色度,fill=填充色!色度,清晰度,minimum size=结点大小}
		[L1Node/.style={circle,draw=blue!30, fill=white!10, very thick, minimum size=8mm},
		L2Node/.style={circle,draw=pink!50, fill=white!10, very thick, minimum size=8mm}]
		
		% 添加背景色,粉色、蓝色和绿色
		% \fill[颜色!透明度]坐标从(0,0)(15mm,40mm)的矩形node(编号){}
		\fill[pink!60](0,0)rectangle(15mm,40mm)node(b1){};
		% \fill[颜色!透明度]坐标从(30mm,0)(45mm,40mm)的矩形
		\fill[blue!40](30mm,0)rectangle(45mm,40mm)node(b1){};
		% \fill[颜色!透明度]坐标从(60mm,0)(75mm,40mm)的矩形
		\fill[green!40](60mm,0)rectangle(75mm,40mm)node(b1){};
		
		% 添加输入层结点
		% \foreach循环\x依次等于1,2,3
		% \node[结点样式] (结点名称) at (结点坐标) {节点内容}
		\foreach \x in {1,...,3}
		\node[L1Node] (a_\x) at (0.76, \x){};		
		
		% 添加隐藏层结点
		\foreach \x in {4,...,7}
		\node[L2Node] (b_\x) at (3.76, \x-3.5){};	
		
		% 添加输出结点
		\foreach \x in {8,9}
		\node[L1Node] (c_\x) at (6.76, \x-6.5){};
		
		% 输入层到隐藏层之间的连线
		\foreach \x in {1,2,3}   % 双层for循环
		{\foreach \z in {4,5,6,7}
			% \draw[线的样式:-{stealth[sep=1pt]}为带箭头的线,[sep箭头距离]
			\draw[-stealth](a_\x)--(b_\z);	
		}
		
		% 隐藏层到输出层之间的连线
		\foreach \z in{4,5,6,7}
		{\foreach \y in{8,9}
			\draw[-stealth](b_\z)--(c_\y);	
		}
	
	    % 添加说明文字
        % 名称node[居中] at (坐标) {结点内容}
        \node[align=center] at (0.7,4.8) {Input\\layer};
        \node[align=center] at (3.7,4.8) {Hidden\\layer};
        \node[align=center] at (6.7,4.8) {Output\\layer};
	    
	\end{tikzpicture}
\end{document}

  效果图如下:
在这里插入图片描述

LaTeX 画一个推导用神经网络图

  在上述的基础之上改进一点点,如下:

% 前言部分
\documentclass{article}

% 导入宏
\usepackage{tikz}

% 正文部分
\begin{document}
	\begin{tikzpicture}
		% 结点样式名称/.style={形状,draw=颜色!色度,fill=填充色!色度,清晰度,minimum size=结点大小}
		[L1Node/.style={circle,draw=blue!30,fill=blue!10,very thick, minimum size=10pt},
		L2Node/.style={circle,draw=pink!50,fill=pink!20,very thick, minimum size=10pt}]
		
		% 画输入层结点
		\foreach \x in {1,...,3}  % 循环,使得\x的值依次等于123
		% \node[结点的样式](结点的名称)at(结点的坐标){结点的内容}
		\node[L1Node] (a_\x) at (0,-\x){$\x$};  
		
		% 画隐藏层结点
		\foreach \z in {4,...,7}
		\node[L2Node] (b_\z) at (2,-\z + 3.5){$\z$};
		
		% 画输出层结点
		\foreach \y in {8,9}
		\node[L1Node] (c_\y) at (4,-\y + 6.5){$\y$};
		
		% 输入特征x
		\foreach \x in {1,2,3}
		\node(x_\x)at(-1.5,-\x){$x_\x$};
		
		% 输出数值y
		\node(y_1)at(5.5,-1.5){$y_1$};
		\node(y_2)at(5.5,-2.5){$y_2$};
		
		% 输入特征值与输入层之间的连线
		\foreach \x in {1,2,3} 
		\draw[-stealth](x_\x)--(a_\x);
		
		% 链接输入层到隐藏层之间的连线
		\foreach \x in{1,2,3}
		{\foreach \z in{4,5,6,7}
			% \draw[线的样式:-{stealth[sep=1pt]}为带箭头的线,[sep箭头距离]
			\draw[-stealth](a_\x)--(b_\z);	
		}
		
		% 链接隐藏层到输出层之间的连线
		\foreach \z in{4,5,6,7}
		{\foreach \y in{8,9}
			\draw[-stealth](b_\z)--(c_\y);	
		}
		
		% 输出y与输出层之间的连线
		\draw[-stealth](c_8)--(y_1);
		\draw[-stealth](c_9)--(y_2);
		
		% 添加权值w
		% \node[结点的样式](结点的名称)at(结点的坐标){结点的内容}
		\node[](w_1) at (1,-0.65){$w_{41}$};
		\node[](w_2) at (1,-1.15){$w_{42}$};
		\node[](w_3) at (1,-1.65){$w_{43}$};
		
		% 添加权重v
		\node[](v_1) at (3,-0.9){$v_{84}$};
		\node[](v_2) at (3,-1.4){$v_{85}$};
		\node[](v_3) at (3,-1.9){$v_{86}$};
		\node[](v_4) at (3,-2.4){$v_{87}$};
		
		% 隐藏层公式
		\node[](z) at (2,0.3){$z_j=sigmoid(a_j)$};
		
		% 添加a_j值
		\foreach \x in {4,...,7}
		\node[](a)at(2.1,-\x+3.9){$a_\x$};
		
		% 输出层公式
		\node[](y) at (4,-0.5){$y_k=sigmoid(b_k)$};
		
		% 添加b_j值
		\foreach \x in {8,9}
		\node[](b)at(4.1,-\x+6.96){$b_\x$};
		
		% 添加说明表示
		\node[](w_ji)at(1,-4){$w_{ji}$};
		\node[](w_kj)at(3,-4){$v_{kj}$};
		
	\end{tikzpicture}
\end{document}

效果图如下:
在这里插入图片描述

更多操作参考:https://www.latexstudio.net/archives/9774.html

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值