เมื่อเขียนบทความ / นำเสนอเกี่ยวกับหัวข้อที่เกี่ยวกับโครงข่ายประสาทเทียมมักจะแสดงภาพสถาปัตยกรรมเครือข่าย
อะไรคือวิธีที่ดี / ง่ายในการมองเห็นสถาปัตยกรรมทั่วไปโดยอัตโนมัติ
เมื่อเขียนบทความ / นำเสนอเกี่ยวกับหัวข้อที่เกี่ยวกับโครงข่ายประสาทเทียมมักจะแสดงภาพสถาปัตยกรรมเครือข่าย
อะไรคือวิธีที่ดี / ง่ายในการมองเห็นสถาปัตยกรรมทั่วไปโดยอัตโนมัติ
คำตอบ:
หากเครือข่ายประสาทจะได้รับเป็นกราฟ Tensorflow แล้วคุณสามารถเห็นภาพกราฟนี้กับ TensorBoard
นี่คือลักษณะของ MNIST CNN:
คุณสามารถเพิ่มชื่อ / ขอบเขต (เช่น "dropout", "softmax", "fc1", "conv1", "conv2") ด้วยตัวคุณเอง
ต่อไปนี้เป็นเพียงกราฟด้านซ้ายเท่านั้น ฉันไม่สนใจกราฟขนาดเล็ก 4 ตัวที่ครึ่งขวา
แต่ละกล่องเป็นเลเยอร์พร้อมพารามิเตอร์ที่สามารถเรียนรู้ได้ สำหรับการอนุมานข้อมูลจะไหลจากล่างขึ้นบน จุดไข่ปลาเป็นชั้นซึ่งไม่มีพารามิเตอร์ที่เรียนรู้
สีของกล่องไม่มีความหมาย
ฉันไม่แน่ใจเกี่ยวกับมูลค่าของกล่องเล็กประ ("การไล่ระดับสี", "อดัม", "บันทึก")
ฉันเพิ่งสร้างเครื่องมือสำหรับการวาดสถาปัตยกรรม NN และส่งออก SVG ที่เรียกว่าNN-SVG
ใน Caffe คุณสามารถใช้ caffe / draw.pyเพื่อวาด Protobuffer NetParameter:
ใน Matlab คุณสามารถใช้ มุมมอง (สุทธิ)
Keras.js :
ฉันจะเพิ่มการสร้างภาพ ASCII โดยใช้keras-sequential-ascii (ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้เขียน)
เครือข่ายขนาดเล็กสำหรับ CIFAR-10 (จากบทช่วยสอนนี้ ) จะเป็น:
OPERATION DATA DIMENSIONS WEIGHTS(N) WEIGHTS(%)
Input ##### 32 32 3
Conv2D \|/ ------------------- 896 2.1%
relu ##### 30 30 32
MaxPooling2D Y max ------------------- 0 0.0%
##### 15 15 32
Conv2D \|/ ------------------- 18496 43.6%
relu ##### 13 13 64
MaxPooling2D Y max ------------------- 0 0.0%
##### 6 6 64
Flatten ||||| ------------------- 0 0.0%
##### 2304
Dense XXXXX ------------------- 23050 54.3%
softmax ##### 10
สำหรับ VGG16 มันจะเป็น:
OPERATION DATA DIMENSIONS WEIGHTS(N) WEIGHTS(%)
Input ##### 3 224 224
InputLayer | ------------------- 0 0.0%
##### 3 224 224
Convolution2D \|/ ------------------- 1792 0.0%
relu ##### 64 224 224
Convolution2D \|/ ------------------- 36928 0.0%
relu ##### 64 224 224
MaxPooling2D Y max ------------------- 0 0.0%
##### 64 112 112
Convolution2D \|/ ------------------- 73856 0.1%
relu ##### 128 112 112
Convolution2D \|/ ------------------- 147584 0.1%
relu ##### 128 112 112
MaxPooling2D Y max ------------------- 0 0.0%
##### 128 56 56
Convolution2D \|/ ------------------- 295168 0.2%
relu ##### 256 56 56
Convolution2D \|/ ------------------- 590080 0.4%
relu ##### 256 56 56
Convolution2D \|/ ------------------- 590080 0.4%
relu ##### 256 56 56
MaxPooling2D Y max ------------------- 0 0.0%
##### 256 28 28
Convolution2D \|/ ------------------- 1180160 0.9%
relu ##### 512 28 28
Convolution2D \|/ ------------------- 2359808 1.7%
relu ##### 512 28 28
Convolution2D \|/ ------------------- 2359808 1.7%
relu ##### 512 28 28
MaxPooling2D Y max ------------------- 0 0.0%
##### 512 14 14
Convolution2D \|/ ------------------- 2359808 1.7%
relu ##### 512 14 14
Convolution2D \|/ ------------------- 2359808 1.7%
relu ##### 512 14 14
Convolution2D \|/ ------------------- 2359808 1.7%
relu ##### 512 14 14
MaxPooling2D Y max ------------------- 0 0.0%
##### 512 7 7
Flatten ||||| ------------------- 0 0.0%
##### 25088
Dense XXXXX ------------------- 102764544 74.3%
relu ##### 4096
Dense XXXXX ------------------- 16781312 12.1%
relu ##### 4096
Dense XXXXX ------------------- 4097000 3.0%
softmax ##### 1000
มีโครงการโอเพนซอร์สที่ชื่อว่าNetron
Netron เป็นตัวแสดงสำหรับโครงข่ายประสาทเทียมการเรียนรู้เชิงลึกและโมเดลการเรียนรู้ของเครื่อง
Netron รองรับ ONNX (.onnx, .pb), Keras (.h5, .keras), CoreML (.mlmodel) และ TensorFlow Lite (.tflite) Netron มีการสนับสนุนการทดลองสำหรับ Caffe (.caffemodel), Caffe2 (predict_net.pb), MXNet (-symbol.json), TensorFlow.js (model.json, .pb) และ TensorFlow (.pb, .meta)
Keras
โมดูล keras.utils.vis_utilsให้ฟังก์ชั่นยูทิลิตี้พล็อตรูปแบบ Keras (ใช้ Graphviz)
ต่อไปนี้แสดงโมเดลเครือข่ายที่เลเยอร์แรกที่ซ่อนมี 50 เซลล์ประสาทและคาดว่าจะมีตัวแปรอินพุต 104 ตัว
plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=True)
แพ็คเกจ Python conx
สามารถแสดงภาพเครือข่ายด้วยการเปิดใช้งานด้วยฟังก์ชั่นnet.picture()
ในการสร้างภาพ SVG, PNG หรือ PIL ดังนี้:
Conx สร้างขึ้นบน Keras และสามารถอ่านได้ในโมเดลของ Keras สามารถเปลี่ยนตารางสีของแต่ละธนาคารและสามารถแสดงประเภทธนาคารทั้งหมดได้
ข้อมูลเพิ่มเติมสามารถดูได้ที่: http://conx.readthedocs.io/en/latest/
ฉันกำลังทำงานกับ Visualizer เครือข่ายประสาทแบบลากและวาง (และอื่น ๆ ) นี่คือตัวอย่างของการสร้างภาพสำหรับสถาปัตยกรรมแบบ LeNet โมเดลที่มีการออกแบบให้มีพัดลมและพัดลมในนั้นก็เป็นแบบจำลองที่ค่อนข้างง่าย คุณสามารถเยี่ยมชมเว็บไซต์ได้ที่https://math.mit.edu/ennui/
ใน R nnet
ไม่ได้มาพร้อมกับฟังก์ชั่นการพล็อต แต่รหัสสำหรับที่มีให้ที่นี่ที่นี่
อีกวิธีหนึ่งคุณสามารถใช้แพ็คเกจที่ใหม่กว่าและ IMHO ที่ดีกว่าneuralnet
ซึ่งเรียกว่าคุณสมบัติซึ่งมีplot.neuralnet
ฟังก์ชั่นดังนั้นคุณสามารถทำได้:
data(infert, package="datasets")
plot(neuralnet(case~parity+induced+spontaneous, infert))
neuralnet
ไม่ได้ใช้มากเท่าที่เป็นnnet
เพราะnnet
เก่ากว่ามากและมาพร้อมกับ r-cran แต่neuralnet
มีอัลกอริธึมการฝึกอบรมมากขึ้นรวมถึงการขยายแบ็กอัพที่ยืดหยุ่นซึ่งขาดแม้กระทั่งในแพ็คเกจเช่น Tensorflow และมีความทนทานต่อตัวเลือกพารามิเตอร์ไฮเปอร์และมีประสิทธิภาพมากกว่าโดยรวม
มีความพยายามทางเลือกใหม่ในการสร้างภาพเครือข่ายประสาท
โปรดดูบทความเหล่านี้:
'AI brain scan' อันน่าทึ่งเผยให้เห็นเครื่องจักรที่เห็นในขณะที่พวกเขาเรียนรู้ทักษะใหม่ ๆ
ภายในสมอง 'AI' - การเรียนรู้ด้วยเครื่องมีลักษณะอย่างไร
วิธีการเหล่านี้มุ่งเน้นไปที่การมองเห็นการทำงานของโครงข่ายประสาทเทียมมากขึ้นอย่างไรก็ตามสถาปัตยกรรม NN ยังสามารถมองเห็นได้ในแผนภาพผลลัพธ์
ตัวอย่าง:
ไม่ใช่เรื่องง่ายสำหรับเอกสาร แต่มีประโยชน์มากสำหรับการแสดงคนที่ไม่รู้จักเครือข่ายประสาทเกี่ยวกับสิ่งที่โทโพโลยีของพวกเขาอาจมีลักษณะอย่างไร ไลบรารี Javascriptนี้(Neataptic)ให้คุณเห็นภาพเครือข่ายของคุณ:
คุณสามารถอ่านเอกสารที่เป็นที่นิยมการทำความเข้าใจกับโครงข่ายประสาทผ่านการสร้างภาพข้อมูลลึกซึ่งกล่าวถึงการสร้างภาพข้อมูลของอวนเชิงซ้อน การใช้งานไม่เพียงแสดงแต่ละชั้น แต่ยังแสดงให้เห็นถึงการเปิดใช้งาน, น้ำหนัก, deconvolutions และสิ่งอื่น ๆ อีกมากมายที่มีการกล่าวถึงอย่างลึกซึ้งในกระดาษ มันเป็นรหัสที่caffe'
มา ส่วนที่น่าสนใจคือคุณสามารถแทนที่โมเดลที่ได้รับการฝึกฝนมาเป็นของคุณเอง
Tensorspace-JS เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการสร้างภาพ 3 มิติของสถาปัตยกรรมเครือข่าย:
และนี่คือโพสต์ที่ดีเกี่ยวกับวิธีการเขียนโปรแกรม:
Netscopeเป็นเครื่องมือประจำวันของฉันสำหรับรุ่น Caffe