首页 > 其他分享 >囚徒5.4_基于texlive的PlotNeuralNet画深度学习框架图

囚徒5.4_基于texlive的PlotNeuralNet画深度学习框架图

时间:2024-06-05 19:54:59浏览次数:21  
标签:10 5.4 name caption height 框架图 offset PlotNeuralNet width

首先下载并安装texlive

连接如下texlive安装教程

接着下载PlotNeuralNet项目

下载链接PlotNeuralNet

下载

对PlotNeuralNet的一些解释

  1. 它其实是基于texlive语言,然后通过python语言按照texlive的语法格式进行拼接生成tex文档之后使用pdflatex命令生成pdf.
  2. PlotNeuralNet中有一系列的写好的函数,主要注意layers、pycore、pyexamples三个文件夹。
    • 其中pyexamples文件夹中存放的是我们用于生成tex、进行生成pdf的python画图文件,这个是我们自己写的python文件放在这里(其实放在哪里都行,只是该路径的事而已)。
    • pycore文件夹中存放的是它写好的一些用于画图的函数,放在tikzeng.py和blocks.py中。对这俩解释一下这俩文件中的函数它的本质就是按照texlive的语法,根据你的输入参数进行拼接,他就是组合成texlive命令生成tex文件,然后通过texlive生成pdf。这里面的函数你可以自己定义,在你学习了texlive语言后,你可以随便按照自己的需求进行定义函数。
    • layers文件夹 其中有一个init.tex文件,它的作用是调用三个sty文件
    • 需要注意的是在你画图时tikzeng.py中to_head、to_cor、to_begin三个函数时必须添加的,时必不可少的,一个时添加init.tex的引用路径,一个时添加层颜色定义,最后一个是文档的开头
  3. 关于路径问题
    • draw_network.py,中要把pycore中的tikzeng.py中的函数导入,这需要添加路径,它官方用的sys库添加路径,我不知道为什么在我的电脑上添加后还是找不到。我换了一下用的os库
    • 第二个路径问题是关于layers文件夹中的init.tex导入,这个是基于你生成的tex文件的路径的,它修改的地方有两处,一个是tikzeng.py中的to_hand函数中,一个是在你使用函数输入参数时,根据你最后tex生成在哪,你选择性修改,如果你不是时常用可以直接在tex文件中修改。
    • 最后我在画图的python文档后面添加了直接生成pdf的命令,并删除附带文件的命令
    • 代码如下

import sys
import os

# 确保 pycore 目录在 Python 路径中
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'pycore')))

# 导入 tikzeng 模块
try:
    from tikzeng import *
    print("Module imported successfully.")
except ImportError as e:
    print("Error importing module:", e)
    sys.exit(1)

# 定义网络结构
arch = [
    to_head( ''),
    to_cor(),
    to_begin(),

    to_input_p('image/MH.jpg', width=10, height=10, name="input",caption="Input"),
    #block-001
    to_Conv(name='conv1', s_filer=3, n_filer=512, offset="(0,0,0)", to="(0,0,0)", width=4, height=40, depth=40, caption="Block1"),
    to_BN(name='bn1', offset="(0,0,0)", to="(conv1-east)", width=1, height=40, depth=40, caption=""),
    to_Relu(name='relu1', offset="(0,0,0)", to="(bn1-east)", width=1, height=40, depth=40, caption=""),
    to_Pool(name="pool1", offset="(0,0,0)", to="(relu1-east)", width=1, height=20, depth=20, opacity=0.5, caption="MaxPool1"),
    
    #block-002
    to_Conv(name='conv2', s_filer=3, n_filer=512, offset="(2,0,0)", to="(pool1-east)", width=2, height=20, depth=20, caption="Block2"),
    to_BN(name='bn2', offset="(0,0,0)", to="(conv2-east)", width=1, height=20, depth=20, caption=""),
    to_Relu(name='relu2', offset="(0,0,0)", to="(bn2-east)", width=1, height=20, depth=20, caption=""),
    to_Pool(name="pool2", offset="(0,0,0)", to="(relu2-east)", width=1, height=10, depth=10, opacity=0.5, caption="MaxPool2"),
    to_connection( "pool1", "conv2"),
    
    #block-003
    to_Conv(name='conv3', s_filer=3, n_filer=512, offset="(2,0,0)", to="(pool2-east)", width=1, height=10, depth=10, caption="Block3"),
    to_BN(name='bn3', offset="(0,0,0)", to="(conv3-east)", width=1, height=10, depth=10, caption=""),
    to_Relu(name='relu3', offset="(0,0,0)", to="(bn3-east)", width=1, height=10, depth=10, caption=""),
    to_connection( "pool2", "conv3"),
    
    #block-004
    to_Conv(name='conv4', s_filer=3, n_filer=1024, offset="(2,0,0)", to="(relu3-east)", width=1, height=10, depth=10, caption="Block4"),
    to_BN(name='bn4', offset="(0,0,0)", to="(conv4-east)", width=1, height=10, depth=10, caption=""),
    to_Relu(name='relu4', offset="(0,0,0)", to="(bn4-east)", width=1, height=10, depth=10, caption=""),
    to_connection( "relu3", "conv4"),
    
    #block-005
    to_Conv(name='conv5', s_filer=3, n_filer=1024, offset="(2,0,0)", to="(relu4-east)", width=2, height=10, depth=10, caption="Block5"),
    to_BN(name='bn5', offset="(0,0,0)", to="(conv5-east)", width=1, height=10, depth=10, caption=""),
    to_Relu(name='relu5', offset="(0,0,0)", to="(bn5-east)", width=1, height=10, depth=10, caption=""),
    to_connection( "relu4", "conv5"),
    

    to_Flatten(name='flatten', offset="(2,0,0)", to="(relu5-east)", width=1, height=1, depth=128, caption="Flatten"),
    to_connection( "relu5", "flatten"),
    

    to_FullyConnected(name="fc1", s_filer=1, n_filer=1024, offset="(2,0,0)", to="(flatten-east)", width=2, height=1, depth=128, caption="FC1"),
    to_connection( "flatten", "fc1"),
    

    to_Dropout(name="dropout", s_filer=0.3, n_filer=1024, offset="(1,0,0)", to="(fc1-east)", width=2, height=1, depth=128, caption="Dropout"),
    to_connection( "fc1", "dropout"),
    

    to_FullyConnected(name="fc2", s_filer=1, n_filer=1, offset="(2,0,0)", to="(dropout-east)", width=1, height=1, depth=1, caption="FC2"),
    to_connection( "dropout", "fc2"),
    

    to_SoftMax(name="softmax", s_filer=1, offset="(1,0,0)", to="(fc2-east)", width=1, height=1, depth=1, caption="Output"),
    to_connection( "fc2", "softmax"),
    to_end()
]

# 绘制网络结构图
def main():
    filename = os.path.basename(__file__).split('.')[0]  # 获取当前脚本的文件名(不含扩展名)
    to_generate(arch, filename + '.tex')  # 生成 LaTeX 文件
    os.system('pdflatex ' + filename + '.tex')  # 调用 pdflatex 命令编译 LaTeX 文件,tex文件生成在项目目录下
    os.remove(filename + '.log')  # 删除 .log 文件
    os.remove(filename + '.aux')  # 删除 .aux 文件
    os.remove(filename + '.tex')  # 删除 .tex 文件


if __name__ == '__main__':
    main()

标签:10,5.4,name,caption,height,框架图,offset,PlotNeuralNet,width
From: https://www.cnblogs.com/qt-pyq/p/18233614

相关文章

  • 【网络基础知识】-- 服务框架图s
    ......
  • PC方格音乐v1.5.4无损音乐播放 – 一款免费无损音乐播放器
    软件介绍方格音乐(魔音Morin电脑版)是一款免费无损音乐播放器及付费歌曲无损音乐免费下载软件.方格音乐播放器采用简洁的风格设计,可以免费在线试听及下载付费歌曲,版权音乐,无损音质歌曲.方格音乐电脑版免费听歌神器支持歌曲解析功能,第三方歌单导入,歌词频谱功能,下载音乐时......
  • orangepi zero2在linux5.4以上内核使用ili9341
    背景根据orangepizero2用户手册说明,linux5.13内核不能使用modprobefbtft_device驱动spilcd查看linux内核源码提交记录,发现在v5.4-rc3中删除了fbtft_device.c文件commit如下staging/fbtft:Removefbtft_deviceCommitc440eee("Staging:fbtft:Switchtothegpiode......
  • VMware vSphere Bitfusion 4.5.4 - 面向 AI 和 ML 应用提供弹性基础架构
    VMwarevSphereBitfusion4.5.4-面向AI和ML应用提供弹性基础架构请访问原文链接:VMwarevSphereBitfusion4.5.4-面向AI和ML应用提供弹性基础架构,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwarevSphereBitfusion4.5|23NOV2021|Build4......
  • 5.4 模拟赛
    T1T4杀卵题不说。做了COCI的原题。T3Rolete为什么先说T3,因为T3很简单。首先先预处理出按\(x\)次按钮需要的时间。根据直觉,我们观察到一个显然的贪心:如果在\(x\)按了\(p_x\)次,那么在\(x-1\)拉的次数\(p_{x-1}\gep_x\)。反证即可证明。直接上决策单调性优......
  • 力扣1235 2024.5.4
    原题网址:https://leetcode.cn/problems/maximum-profit-in-job-scheduling/submissions/529098063/个人难度评价:1600分析:一眼DP,考虑DP顺序,DP递推式与边界十分类似背包,记i为第i段时间,显然有dp[i]=max(dp[i-1],dp[b[i]]+p[i])由此得出递推顺序为按结束时间为第一关键字升序递推......
  • 个人算法竞赛模板(2024.5.4)
    精简版:#include<algorithm>#include<cmath>#include<cstring>#include<iostream>#include<map>#include<queue>#include<set>#include<stack>#include<string>#include<vector>#include<......
  • 【专题STM32F103】移植STemWin5.44+ ILI9341显示无触摸屏 + cubemx+野火霸道V2
    在已经做好LCD_ ILI9841的基础上,进行移植,不考虑触摸屏。 一、无操作系统移植第一步:找到STemWin5.44库文件。 第二步:将相关文件放在Project文件夹内,设置项目相关参数。添加:GUI_X.c  GUI_config.c  LCDConf_FlexColor_Template.c 和 STemWin_CM3_wc16_ARGB.a(无OS) ......
  • BLE V5.4新功能特性
     BluetoothSIG的Bluetooth®v5.4核心规范为支持Bluetooth的物联网设备带来了多项优势,重点是增强了通信能力、安全性和效率。这些改进尤其适用于涉及大量设备的应用,如零售、资产跟踪和智慧家居环境。主要优势包括:与数千个终端节点进行双向通信带响应的周期性广播(......
  • flask框架图书管理系统服务器端
    fromflaskimportFlask,request,jsonifyapp=Flask(__name__)books=[{'id':1,'title':'book1','author':'au1'},{'id':2,'title':'book2','author':'au2'},......