歡迎光臨
每天分享高質量文章

怎麼畫高大上的神經網路結構?試試這個!

導讀:現在這年頭,做深度學習的,如果不在自己的文章裡畫一個神經網路結構圖,都不好意思出門跟人說話。今天小編給大家介紹一個工具,讓你簡單又快速的搞定神經網路結構圖:PlotNeuralNet。

 

來源:專知(ID:Quan_Zhuanzhi)

01 工具簡介

PlotNeuralNet工具,具如其名,plot neural net用的,首先我們看看效果:

▲FCN-8

▲VGG-16

▲Holistically-Nested Edge Detection

02 安裝使用

PlotNeuralNet的使用方法非常簡單,首先將這個專案克隆下來:

 

git clone https://github.com/HarisIqbal88/PlotNeuralNet

然後,你可以自己寫一個python指令碼,想要用什麼結構,就從PlotNerualNet裡找對應的模組,然後,把它們拼起來就行, 好比UNet:

你只需要按部就班的堆:

import sys
sys.path.append('../')
from core.tikzeng 
import *from core.blocks  import *

arch = [ 
    to_head('..'), 
    to_cor(),
    to_begin(),    
    #input
    to_input( '../examples/fcn8s/cats.jpg' ),    

    #block-001
    to_ConvConvRelu( name='ccr_b1', s_filer=500, n_filer=(64,64), offset="(0,0,0)", to="(0,0,0)", width=(2,2), height=40, depth=40  ),
    to_Pool(name="pool_b1", offset="(0,0,0)", to="(ccr_b1-east)", width=1, height=32, depth=32, opacity=0.5),    

    *block_2ConvPool( name='b2', botton='pool_b1', top='pool_b2', s_filer=256, n_filer=128, offset="(1,0,0)", size=(32,32,3.5), opacity=0.5 ),    
    *block_2ConvPool( name='b3', botton='pool_b2', top='pool_b3', s_filer=128, n_filer=256, offset="(1,0,0)", size=(25,25,4.5), opacity=0.5 ),    
    *block_2ConvPool( name='b4', botton='pool_b3', top='pool_b4', s_filer=64,  n_filer=512, offset="(1,0,0)", size=(16,16,5.5), opacity=0.5 ),    

    #Bottleneck
    #block-005
    to_ConvConvRelu( name='ccr_b5', s_filer=32, n_filer=(1024,1024), offset="(2,0,0)", to="(pool_b4-east)", width=(8,8), height=8, depth=8, caption="Bottleneck"  ),
    to_connection( "pool_b4""ccr_b5"),    

    #Decoder
    *block_Unconv( name="b6", botton="ccr_b5", top='end_b6', s_filer=64,  n_filer=512, offset="(2.1,0,0)", size=(16,16,5.0), opacity=0.5 ),
    to_skip( of='ccr_b4', to='ccr_res_b6', pos=1.25),    
    *block_Unconv( name="b7", botton="end_b6", top='end_b7', s_filer=128, n_filer=256, offset="(2.1,0,0)", size=(25,25,4.5), opacity=0.5 ),
    to_skip( of='ccr_b3', to='ccr_res_b7', pos=1.25),    
    *block_Unconv( name="b8", botton="end_b7", top='end_b8', s_filer=256, n_filer=128, offset="(2.1,0,0)", size=(32,32,3.5), opacity=0.5 ),
    to_skip( of='ccr_b2', to='ccr_res_b8', pos=1.25),    

    *block_Unconv( name="b9", botton="end_b8", top='end_b9', s_filer=512, n_filer=64,  offset="(2.1,0,0)", size=(40,40,2.5), opacity=0.5 ),
    to_skip( of='ccr_b1', to='ccr_res_b9', pos=1.25),

    to_ConvSoftMax( name="soft1", s_filer=512, offset="(0.75,0,0)", to="(end_b9-east)", width=1, height=40, depth=40, caption="SOFT" ),
    to_connection( "end_b9""soft1"),

    to_end() 
    ]

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

趕緊試試吧!

Github 地址:

https://github.com/HarisIqbal88/PlotNeuralNet

    贊(0)

    分享創造快樂