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

文章目录

    • 引言
    • 正文
      • PlotNeuralNet
      • 安装
      • 使用
        • 使用python进行编辑
        • 使用latex进行编辑
      • 样例
      • 利用chatGPT
        • 使用chatGPT生成Latex代码
        • 利用chatGPT生成对应的python代码
    • 总结
    • 引用

引言

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

正文

PlotNeuralNet

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

安装

  • 1、在ubuntu系统中安装如下包
  • Ubuntu 16.04系统
sudo apt-get install texlive-latex-extra
  • Ubuntu 18.04.2输入如下指令进行安装
  • 这里是需要你安装一个叫做pdflatex的软件,能够将latex的代码tex转成对应的pdf。具体安装指令如下
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文件,具体指令见下方
pdflatex latex_source_name.tex
  • windows平台

    • 下载并安装MikeTex软件,下载链接
    • 下载并安装windows上运行的bash运行工具,推荐使用git的bash工具或者Cygwin
      • git下载链接
      • Cygwin下载链接
  • 2、运行如下指令

cd pyexamples/
bash ../tikzmake.sh test_simple

在这里插入图片描述

  • 这里可以看一下测试样例的python代码

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

\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编写代码
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对应的路径下方,运行如下指令
cd pyexamples/
bash ../tikzmake.sh test_simple

使用latex进行编辑

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

在这里插入图片描述

样例

在这里插入图片描述

利用chatGPT

使用chatGPT生成Latex代码

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

在这里插入图片描述

  • 根据具体的操作过程,在后续的过程中,会更新

利用chatGPT生成对应的python代码

  • chatGPT默认的PlotNeuralNet是一个Latex包,其中并没有python的接口,所以并不能生成对应的代码。直接生成不现实。
    在这里插入图片描述
  • 这里还是尝试先给他一个代码样例,然后在提出对应的要求。效果良好。

在这里插入图片描述

  • 但是,注意,PlotNeuralNet的python接口支持的组件不多,有一部分的模型画不出来,仅仅支持一下的几种

在这里插入图片描述

总结

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

引用

  • Creating Stunning Neural Network Visualizations with ChatGPT and PlotNeuralNet
  • PlotNeuralNet

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5796.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端Web实战:从零打造一个类Visio的流程图拓扑图绘图工具

前言 大家好,本系列从Web前端实战的角度,给大家分享介绍如何从零打造一个自己专属的绘图工具,实现流程图、拓扑图、脑图等类Visio的绘图工具。 你将收获 免费好用、专属自己的绘图工具前端项目实战学习如何从0搭建一个前端项目等基础框架项…

java学习(二):反射

系列文章目录 https://editor.csdn.net/md/?articleId131757340 文章目录 系列文章目录参考【1】注解1. 什么是注解2. 内置注解3. 元注解4.自定义注解 【2】反射--基本概念一、反射的基本概念1. 为什么要用反射?2. 什么是反射?3. 用和不用反射的区别&a…

代码随想录-回溯(组合问题)|ACM模式

目录 前言: 77.组合 题目描述: 输入输出示例: 思路和想法: 216. 组合总和 III 题目描述: 输入输出示例: 思路和想法: 17. 电话号码的字母组合 题目描述: 输入输出描述&a…

MyBatis的多表操作

1 MyBatis的多表操作 1.1 多表模型介绍 我们之前学习的都是基于单表操作的,而实际开发中,随着业务难度的加深,肯定需要多表操作的。 多表模型分类 一对一:在任意一方建立外键,关联对方的主键。 一对多:在…

实用便捷!一站式BI系统推荐

在企业数字化转型过程中,BI系统可以建立业务、数据的双驱引擎,形成业务、数据的互补作用,通过建立数字化技术架构,明确企业的战略定位和业务目标,从而支撑实现这个目标。而一站式BI系统,则是指可以轻松从数…

【MySQL】SQL性能分析 (七)

🚗MySQL学习第七站~ 🚩本文已收录至专栏:MySQL通关路 ❤️文末附全文思维导图,感谢各位点赞收藏支持~ 假如我们需要对SQL进行优化,我们就必须对他足够的了解,比如 对哪一类SQL进行优化(增删改查…

基于物联网网关的工业数据可视化平台有什么功能?

随着数字化浪潮的不断发展,工业数据的价值越来越重要。在企业利用数据的过程中,数据可视化是数字化系统中十分重要的一部分。然而,工厂多种设备、多种协议影响到系统的搭建使得企业无法获得全面的数据视图,也无法对整个生产流程进…

OJ练习第142题——路径总和 II

113. 路径总和 II 力扣链接:113. 路径总和 II 题目描述 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 Java代码(深度优先搜…

六边形架构

六边形架构 微服务系统架构微服务定义微服务系统设计 传统分层架构六边形架构参考资料 微服务系统架构 需求描述做什么的问题,架构描述怎么做的问题(描述组成系统的各部件及其之间的关系) 微服务定义 下面的定义来自周志明老师的 凤凰架构 微服务是一种通过多个小型…

【Linux】 由“进程”过渡到“线程” -- 什么是线程(thread)?

知识引入初识线程1.什么叫做进程?2.什么叫做线程?3.如何看待我们之前学习的进程? 理解线程创建线程函数调用1.线程一旦被创建,几乎所有资源都是被线程所共享的2.与进程之间切换相比,线程的切换 初识线程总结&#xff1…

使用 Docker 快速上手中文版 LLaMA2 开源大模型

本篇文章,我们聊聊如何使用 Docker 容器快速上手朋友团队出品的中文版 LLaMA2 开源大模型,国内第一个真正开源,可以运行、下载、私有部署,并且支持商业使用。 写在前面 感慨于昨天 Meta LLaMA2 模型开放下载之后,Git…

操作系统练习:进程间通信(共享内存方式)

说明 本文是《操作系统概念(第九版)》3.4节“进程间通信”的练习。 进程间通信主要由两种模型: 共享内存消息传递 本文使用共享内存的方式实现进程间的通信 创建消息生产者 创建生产者的主要操作包括: 定义共享内存的大小、名称,以及通…

netty知识集锦2

粘包半包 粘包半包解决方案, 1短链接,它的消息边界是从链接建立到链接断开 2.定长解码器:服务器端选最大长度的消息作为定长,客户端不足补齐,缺点造成浪费 netty协议设计与解析 Message编码解码

AWS IAM介绍

前言 AWS是世界上最大的云服务提供商,它提供了很多组件供消费者使用,其中进行访问控制的组件叫做IAM(Identity and Access Management), 用来进行身份验证和对AWS资源的访问控制。 功能 IAM的功能总结来看,主要分两种&#xff1…

《零基础入门学习Python》第060讲:论一只爬虫的自我修养8:正则表达式4

有了前面几节课的准备,我们这一次终于可以真刀真枪的干一场大的了,但是呢,在进行实战之前,我们还要讲讲正则表达式的实用方法和扩展语法,然后再来实战,大家多把持一会啊。 我们先来翻一下文档:…

openGauss学习笔记-17 openGauss 简单数据管理-表达式

文章目录 openGauss学习笔记-17 openGauss 简单数据管理-表达式17.1 简单表达式17.2 条件表达式17.3 子查询表达式17.4 数组表达式17.5 行表达式 openGauss学习笔记-17 openGauss 简单数据管理-表达式 表达式类似一个公式,我们可以将其应用在查询语句中&#xff0c…

25 MFC 数据库

文章目录 导入ADO库 导入ADO库 #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")void CADODlg::OnBnClickedBtnQuery() {//导入ADO库::CoInitialize(NULL);//初始化COM库_ConnectionPtr pCo…

《面试1v1》如何提高远程用户的吞吐量

🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结&#xf…

Flutter动画库:animations(路由过渡动画或者页面切换动画)

animations animations 是一个 Flutter 库,它提供了一组用于创建动画效果的工具和组件。这个库的核心重点是路由过渡动画或者页面切换动画 地址 https://pub-web.flutter-io.cn/packages/animations 安装 flutter pub add animations看了下官方文档和官方例子&a…

计科web常见错误排错【HTTP状态404、导航栏无法点开、字符乱码及前后端数据传输呈现、jsp填写的数据传到数据库显示null、HTTP状态500】

web排错记录 在使用javaweb的过程中会出现的一些错误请在下方目录查找。 目录 错误1:HTTP状态404——未找到 错误2:导航栏下拉菜单无法点开的问题 错误3:字符乱码问题 错误4:jsp网页全部都是??&#x…