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

news2024/11/26 0:24:06

文章目录

    • 引言
    • 正文
      • 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.coloradmin.cn/o/778622.html

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

相关文章

06-Vue基础之事件处理

个人名片: 😊作者简介:一名大二在校生 🤡 个人主页:坠入暮云间x 🐼座右铭:懒惰受到的惩罚不仅仅是自己的失败,还有别人的成功。 🎅**学习目标: 坚持每一次的学习打卡 文章…

Cloudreve搭建云盘系统,并实现随时访问

文章目录 1、前言2、本地网站搭建1.环境使用2.支持组件选择3.网页安装4.测试和使用5.问题解决 3、本地网页发布1.cpolar云端设置2.cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了,各互联网大厂也纷纷加入战局,一时间公…

LabelImg 标注工具的使用

目录 1 安装及使用1.1 安装1.2 使用 2 标注格式 1 安装及使用 1.1 安装 Win R输入cmd进入终端界面 LabelImg 安装命令: pip install labelimg没有配置国内 pip 源的,请看 ⇒ \Rightarrow ⇒ 临时办法:在上述命令末尾添加源&#xff0c…

详解C语言自定义类型(结构体,枚举,联合)

❤️ 作者简介 :RO-BERRY 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识,对纯音乐有独特的喜爱 📗 日后方向 : 偏向于CPP开发以及大数据方向,如果你也感兴趣的话欢迎关注博主,期待更新 自定义类型 1.结构体1.1 …

【GUI】使用PID控制器进行台式过程控制实验,以保持热敏电阻的温度(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码、操作说明 💥1 概述 本实验是温度控制的反馈控制应用。特别是,本实验讲解: 手动和自动控制的区别 生成动态数据的 步进测试 拟合动态数…

【动态规划part05】| 1049. 最后一块石头的重量 II 、494. 目标和 、474.一和零

目录 🎈LeetCode 1049.最后一块石头的重量|| 🎈 LeetCode494. 目标和 🎈LeetCode 474.一和零 🎈LeetCode 1049.最后一块石头的重量|| 链接:1049.最后一块石头的重量 有一堆石头,用整数数组 stones 表示…

深入理解 PostgreSQL 的架构和内部工作原理

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

HTML渐变效果:线性渐变与径向渐变详解

简介 在HTML中,你可以使用CSS来创建渐变效果,给元素添加丰富的背景样式。本文将详细介绍HTML中的渐变效果,并提供示例代码帮助你理解和应用。 线性渐变(Linear Gradient) 线性渐变通过沿一条直线给元素应用颜色的渐变效果。你可以定义起始点和结束点之间的颜色过渡方式。…

西门子plc的通信联网不同网段通讯

你是否曾经遇到过需要将不同品牌的PLC数据进行交换的情况?今天我们要介绍的就是远创智控YC8000-PN的ModbusTCP客户机功能,它可以帮助你实现这一需求。 1, 远创智控YC8000-PN的lan1口连接西门子S7-1200的网口,FX5U自带以太网口与远创智控YC8…

JVM-Java虚拟机

JVM——Java虚拟机,是Java实现平台无关性的基石。 基本概念:JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与…

linux中cgroup的简单使用

文章目录 1 简介1.1 主要功能1.2 cgroups子系统 2 绑定进程到指定cpu核数3 限制进程cpu使用率3.1 示例13.2 示例2 4 限制内存使用量5 限制磁盘读取速度 1 简介 Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与…

fastadmin 项目gitee管理

gitee创建一个仓库使用sourcetree等工具拉取代码使用phpstorm远程同步代码到本地设置忽略代码文件 注意:如果是直接把远程代码同步到本地,默认是你在 .gitignore中设置是无效的,代码一样会提交,需要先使用上面的截图去掉缓存&…

进程控制学习笔记

文章目录 进程退出孤儿进程僵尸进程进程回收waitpid()函数 进程退出 子进程的退出需要父进程对其资源的释放,子进程只能对用户区的数据进行释放,无法完成对内核区的释放。 可以获取到。 两个退出的区别: 系统调用不会刷新缓冲区&#xff…

【人工智能】神经网络、M-P_神经元模型、激活函数、神经网络结构、学习网络参数、代价定义、总代价

M-P_神经元模型、激活函数、神经网络结构、学习网络参数、代价定义 文章目录 M-P_神经元模型、激活函数、神经网络结构、学习网络参数、代价定义M-P 神经元模型激活函数(Activation function)神经网络结构举例训练神经网络学习网络参数代价定义均方误差交叉熵(Cross Entropy)…

html input 展示隐藏的密码

<!DOCTYPE html> <html> <meta http-equiv"Content-Type" content"text/html;charsetutf-8"/> <body><h2>登录表格</h2><form action"/action_page.php"><div class"container"><…

vue3-element-plus,控制表格多选的数量

1. 需求描述 控制表格的多选&#xff0c;最多只能选择5条数据&#xff0c;并且其他项禁用 2. 需求描述 <!-- selection-change 当选择项发生变化时会触发该事件--><template><el-tableref"multipleTableRef"v-loading"loading":data"…

微服务基础理论

微服务简介 微服务Microservices之父&#xff0c;马丁.福勒&#xff0c;对微服务大概的概述如下&#xff1a; 就目前而言&#xff0c;对于微服务业界并没有一个统一的、标准的定义&#xff08;While there is no precise definition of this architectural style ) 。但通在其…

flutter开发实战-build编译macos环境可安装dmg

flutter开发实战-build编译macos环境可安装dmg 之前开发中需要变异Macos成dmg的需求&#xff0c;这里记录一下build编译macos环境可安装dmg的过程。 一、工程目录 目录如下 如果工程没有macos&#xff0c;需要增加macos支持的平台。命令 flutter create --platformswindo…

Python爬虫+数据可视化:分析唯品会商品数据

目录 前言数据来源分析1. 明确需求2. 抓包分析&#xff1a;通过浏览器自带工具: 开发者工具 代码实现步骤: 发送请求 -> 获取数据 -> 解析数据 -> 保存数据发送请求解析数据保存数据 数据可视化先读取数据泳衣商品性别占比商品品牌分布占比各大品牌商品售价平均价格各…

华为数通HCIP-ISIS基础

IS-IS的基本概念 isis&#xff08;中间系统到中间路由协议&#xff09; 链路状态路由协议、IGP、无类路由协议&#xff1b; IS-IS是一种链路状态路由协议&#xff0c;IS-IS与OSPF在许多方面非常相似:运行IS-IS协议的直连设备之间通过发送Hello报文发现彼此&#xff0c;然后建…