论文工具——ChatGPT结合PlotNeuralNet快速出神经网络深度学习模型图

文章目录

引言

  • 介绍如何安装PlotNeuralNet工具,并结合chatGPT减少学习成本,快速出图。
  • 将按照软件安装和软件使用,以及最终使用结果四个部分进行介绍。

正文

PlotNeuralNet

  • PlotNeuralNet是一个带有python借口的latex包,能够生成任何你需要的神经网络的可视化图片。生成的图片质量很高,可以用于课程汇报,或者学术论文。
  • 你可以直接使用latex编译程序,编写相关的代码,自动会生成对应的图片。我一般是使用overleaf写的latex代码,线上可以直接渲染,并下载对应的pdf文件
  • overleaf链接:Overleaf

安装

  • 1、在ubuntu系统中安装如下包
  • Ubuntu 16.04系统
bash 复制代码
sudo apt-get install texlive-latex-extra
  • Ubuntu 18.04.2输入如下指令进行安装
  • 这里是需要你安装一个叫做pdflatex的软件,能够将latex的代码tex转成对应的pdf。具体安装指令如下
bash 复制代码
sudo apt-get install texlive-latex-base
sudo apt-get install texlive-fonts-recommended
sudo apt-get install texlive-fonts-extra
sudo apt-get install texlive-latex-extra
  • 将latex代码文件tex后缀的,转成对应的pdf文件,具体指令见下方
bash 复制代码
pdflatex latex_source_name.tex
bash 复制代码
cd pyexamples/
bash ../tikzmake.sh test_simple
  • 这里可以看一下测试样例的python代码

  • 完整的图片对应的latex代码

matlab 复制代码
\documentclass[border=8pt, multi, tikz]{standalone}
\usepackage{import}
\subimport{../layers/}{init}
\usetikzlibrary{positioning}
\usetikzlibrary{3d} %for including external image

\def\ConvColor{rgb:yellow,5;red,2.5;white,5}
\def\ConvReluColor{rgb:yellow,5;red,5;white,5}
\def\PoolColor{rgb:red,1;black,0.3}
\def\UnpoolColor{rgb:blue,2;green,1;black,0.3}
\def\FcColor{rgb:blue,5;red,2.5;white,5}
\def\FcReluColor{rgb:blue,5;red,5;white,4}
\def\SoftmaxColor{rgb:magenta,5;black,7}
\def\SumColor{rgb:blue,5;green,15}

\newcommand{\copymidarrow}{\tikz \draw[-Stealth,line width=0.8mm,draw={rgb:blue,4;red,1;green,1;black,3}] (-0.3,0) -- ++(0.3,0);}

\begin{document}
\begin{tikzpicture}
\tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.7]
\tikzstyle{copyconnection}=[ultra thick,every node/.style={sloped,allow upside down},draw={rgb:blue,4;red,1;green,1;black,3},opacity=0.7]

\pic[shift={(0,0,0)}] at (0,0,0)
    {Box={
        name=conv1,
        caption= ,
        xlabel={{64, }},
        zlabel=512,
        fill=\ConvColor,
        height=64,
        width=2,
        depth=64
        }
    };

\pic[shift={ (0,0,0) }] at (conv1-east)
    {Box={
        name=pool1,
        caption= ,
        fill=\PoolColor,
        opacity=0.5,
        height=32,
        width=1,
        depth=32
        }
    };

\pic[shift={(1,0,0)}] at (pool1-east)
    {Box={
        name=conv2,
        caption= ,
        xlabel={{64, }},
        zlabel=128,
        fill=\ConvColor,
        height=32,
        width=2,
        depth=32
        }
    };

\draw [connection]  (pool1-east)    -- node {\midarrow} (conv2-west);

\pic[shift={ (0,0,0) }] at (conv2-east)
    {Box={
        name=pool2,
        caption= ,
        fill=\PoolColor,
        opacity=0.5,
        height=28,
        width=1,
        depth=28
        }
    };

\pic[shift={(3,0,0)}] at (pool1-east)
    {Box={
        name=soft1,
        caption=SOFT,
        xlabel={{" ","dummy"}},
        zlabel=10,
        fill=\SoftmaxColor,
        opacity=0.8,
        height=3,
        width=1.5,
        depth=25
        }
    };

\draw [connection]  (pool2-east)    -- node {\midarrow} (soft1-west);

\pic[shift={(1.5,0,0)}] at (soft1-east)
    {Ball={
        name=sum1,
        fill=\SumColor,
        opacity=0.6,
        radius=2.5,
        logo=$+$
        }
    };

\draw [connection]  (soft1-east)    -- node {\midarrow} (sum1-west);

\end{tikzpicture}
\end{document}

使用

使用python进行编辑

  • 具体的python编写代码
python 复制代码
import sys
sys.path.append('../')
from pycore.tikzeng import *

# defined your arch
arch = [
    to_head( '..' ),
    to_cor(),
    to_begin(),
    to_Conv("conv1", 512, 64, offset="(0,0,0)", to="(0,0,0)", height=64, depth=64, width=2 ),
    to_Pool("pool1", offset="(0,0,0)", to="(conv1-east)"),
    to_Conv("conv2", 128, 64, offset="(1,0,0)", to="(pool1-east)", height=32, depth=32, width=2 ),
    to_connection( "pool1", "conv2"), 
    to_Pool("pool2", offset="(0,0,0)", to="(conv2-east)", height=28, depth=28, width=1),
    to_SoftMax("soft1", 10 ,"(3,0,0)", "(pool1-east)", caption="SOFT"  ),
    to_connection("pool2", "soft1"),    
    to_Sum("sum1", offset="(1.5,0,0)", to="(soft1-east)", radius=2.5, opacity=0.6),
    to_connection("soft1", "sum1"),
    to_end()
    ]

def main():
    namefile = str(sys.argv[0]).split('.')[0]
    to_generate(arch, namefile + '.tex' )

if __name__ == '__main__':
    main()
  • 注意切换到当前python对应的路径下方,运行如下指令
bash 复制代码
cd pyexamples/
bash ../tikzmake.sh test_simple

使用latex进行编辑

  • 这里我是使用overleaf进行编辑的,也是参考了别人的模板,具体链接
    • overleaf模板:链接
    • 不要动layers中的包,只需要改变main.tex就可

样例

利用chatGPT

使用chatGPT生成Latex代码

  • 按照网上的教程,这里需要先给他一个样例,并且这个样例和你需要画的文件具有一定的相似性,然后让chatGPT帮你生成,具体指令如下
bash 复制代码
这是生成CNN的latex代码,使用的是PlotNeuralNet的Latex包,根据这个代码,帮我写一下FCN的latex代码
  • 生成效果如下
  • 他生成的总归有一些问题,这个时候,你需要根据模型的实际内容进行修改。
  • 我也试验了直接生成对应的模型,看了一下具体的效果
    • 这里直接让他生成unet模型,它只能生成特定的模块,并不能生成完整的网络模型
  • 根据具体的操作过程,在后续的过程中,会更新

利用chatGPT生成对应的python代码

  • chatGPT默认的PlotNeuralNet是一个Latex包,其中并没有python的接口,所以并不能生成对应的代码。直接生成不现实。
  • 这里还是尝试先给他一个代码样例,然后在提出对应的要求。效果良好。
  • 但是,注意,PlotNeuralNet的python接口支持的组件不多,有一部分的模型画不出来,仅仅支持一下的几种

总结

  • 使用这个工具,虽然不能完全不需要写代码 ,但是尽可能减少了我所需要写的编码量,只需要编写局部就行了。不过还是需要能看懂,然后才能进行改错。

引用

相关推荐
江上鹤.1488 小时前
Day40 复习日
人工智能·深度学习·机器学习
行如流水8 小时前
BLIP和BLIP2解析
深度学习
cskywit9 小时前
MobileMamba中的小波分析
人工智能·深度学习
HyperAI超神经9 小时前
【vLLM 学习】Prithvi Geospatial Mae
人工智能·python·深度学习·学习·大语言模型·gpu·vllm
会挠头但不秃12 小时前
深度学习(4)卷积神经网络
人工智能·神经网络·cnn
L.fountain13 小时前
图像自回归生成(Auto-regressive image generation)实战学习(一)
人工智能·深度学习·学习·计算机视觉·图像自回归
视觉&物联智能14 小时前
【杂谈】-边缘计算竞赛:人工智能硬件缘何超越云端
人工智能·ai·chatgpt·aigc·边缘计算·agi·deepseek
لا معنى له14 小时前
学习笔记:卷积神经网络(CNN)
人工智能·笔记·深度学习·神经网络·学习·cnn
资源补给站14 小时前
论文13 | Nature: 数据驱动的地球系统科学的深度学习和过程理解
人工智能·深度学习
金融小师妹14 小时前
非农数据LSTM时序建模强化未来降息预期,GVX-GARCH驱动金价4300点位多空博弈
大数据·人工智能·深度学习