คำแนะนำฉบับย่อในการสร้างการนำเสนอแบบไดอะแกรมของโครงข่ายประสาทเทียมของคุณโดยใช้ Jupyter หรือ Google Colab
บ่อยครั้งในขณะที่ทำงานกับโครงข่ายประสาทเทียมหรือรูปแบบอื่นๆ เช่น โครงข่ายประสาทเทียมแบบ Convolution หรือโครงข่ายประสาทที่เกิดซ้ำ เราต้องการแสดงภาพและสร้างการนำเสนอแบบไดอะแกรมของแบบจำลองที่คอมไพล์ของเรา วิธีนี้สามารถแก้ไขวัตถุประสงค์ได้ 2 ประการ:
- ในขณะที่การกำหนดและการฝึกอบรมโมเดลหลายรายการช่วยให้เราเห็นภาพความลึกของโมเดลของเรา และเปรียบเทียบเลเยอร์ต่างๆ และวิธีการจัดวางตามลำดับ
- ช่วยให้เข้าใจโครงสร้างของแบบจำลอง ฟังก์ชั่นการเปิดใช้งานที่ใช้ในแต่ละเลเยอร์ รูปร่างของแต่ละเลเยอร์ (จำนวนเซลล์ประสาท) และพารามิเตอร์ที่ต้องฝึกฝนได้ดีขึ้น
มีแพ็คเกจไม่กี่แพ็คเกจใน python ที่สามารถสร้างการแสดงภาพของโมเดลโครงข่ายประสาทเทียมของเราได้ สามแพ็คเกจแรกสามารถใช้ได้ก่อนที่โมเดลจะได้รับการฝึก (จำเป็นต้องกำหนดและคอมไพล์โมเดลเท่านั้น) อย่างไรก็ตาม Tensor Boards กำหนดให้ผู้ใช้ฝึกโมเดลเกี่ยวกับข้อมูลที่แม่นยำก่อนจึงจะมองเห็นสถาปัตยกรรมได้
pip ติดตั้ง visualkeraspip ติดตั้ง ann_visualizerpip ติดตั้งกราฟวิซ
เราไม่จำเป็นต้องติดตั้ง "Tensor Board" และ "Keras Model Plot" แยกต่างหาก ซึ่งจะมาพร้อมกับการติดตั้ง Tensorflow & Keras ครั้งแรก
เราอาจใช้ห้องสมุดเพียงไม่กี่แห่งตามรายการด้านล่าง ไลบรารีส่วนใหญ่สามารถแปลงโมเดล TensorFlow เป็นไดอะแกรมโดยไม่ต้องฝึกอบรมข้อมูลอย่างชัดเจน คุณสามารถถือว่านี่เป็นแหล่งความจริงแหล่งเดียว ไลบรารีบางแห่ง เช่น Pandas, Skimage และ OpenCV จะมีประโยชน์เมื่ออ่านข้อมูลที่มีโครงสร้างหรือรูปภาพ
# นำเข้าห้องสมุดที่จำเป็นนำเข้าแพนด้าเป็น pdนำเข้า numpy เป็น np # นำเข้า numpyจากข้อมูลการนำเข้า skimage, io # นำเข้าไลบรารี skimage (ข้อมูล - ทดสอบรูปภาพและข้อมูลตัวอย่าง# io - การอ่าน บันทึก และการแสดงภาพ)จาก skimage.color นำเข้า rgb2grayนำเข้า matplotlib.pyplot เป็น plt # นำเข้า matplotlib.pyplot (เฟรมเวิร์กการลงจุดใน Python)%matplotlib แบบอินไลน์import os # โมดูลนี้ให้วิธีการแบบพกพาในการใช้ฟังก์ชันการทำงานที่ขึ้นอยู่กับระบบปฏิบัติการos.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'คำเตือนการนำเข้า#ระงับคำเตือนWarnings.filterwarnings('ละเว้น')จากหน้าจอนำเข้า IPython.displayนำเข้า cv2 เป็น cv
จาก sklearn.metrics นำเข้าความสับสน_เมทริกซ์จาก sklearn.model_selection นำเข้า train_test_splitจาก tensorflow.keras import utilsจาก tensorflow.keras.models นำเข้า Sequential,load_modelจาก tensorflow.keras.layers นำเข้า Dense, Dropout, Flatten, Conv2D, MaxPool2D, BatchNormalizationจาก tensorflow.keras.optimizers นำเข้า Adamนำเข้าเทนเซอร์โฟลว์เป็น tfนำเข้านกทะเลเป็น sns
ลิงก์ที่เป็นประโยชน์สำหรับการสำรวจเนื้อหาเพิ่มเติมเกี่ยวกับ ANN และ CNN ตั้งแต่เริ่มต้น
เราจะกำหนดโมเดล CNN สามแบบที่แตกต่างกันด้วยไฮเปอร์พารามิเตอร์ที่แตกต่างกัน ตามหลักการแล้ว ในโลกแห่งความเป็นจริง เรามุ่งเป้าไปที่การนำสถาปัตยกรรมที่แตกต่างกันไปใช้เพื่อเพิ่มความแม่นยำสูงสุดหรือตัวชี้วัดที่เกี่ยวข้อง โดยพิจารณาว่าเรากำลังสร้างแบบจำลองสำหรับงานจำแนกประเภทที่มีหลายหมวดหมู่ การเลือกประเภทปัญหาของเราจะไม่มีผลกระทบใดๆ ต่อวิธีนำแพ็คเกจการแสดงภาพไปใช้
เราสร้างฟังก์ชันที่ผู้ใช้กำหนดเพื่อสร้างโมเดลที่แตกต่างกันสามแบบแยกกันด้วยจำนวนเลเยอร์ CNN, การรวมสูงสุด และเลเยอร์หนาแน่นที่แตกต่างกัน
4.1 – สถาปัตยกรรม 1 – เลเยอร์ CNN แบบตื้น + เลเยอร์ ANN
def build_model ():รุ่น = ลำดับ ()model.add(Conv2D(ตัวกรอง=64, kernel_size=(3, 3), input_shape=(128, 128, 1), การเปิดใช้งาน='relu'))model.add(Conv2D(ตัวกรอง=64, kernel_size=(3, 3), การเปิดใช้งาน='relu'))model.add(MaxPool2D((2, 2)))model.add(แบน())model.add (หนาแน่น (256, การเปิดใช้งาน = 'relu'))model.add (หนาแน่น (12, การเปิดใช้งาน = 'softmax'))model.compile(loss='categorical_crossentropy', เครื่องมือเพิ่มประสิทธิภาพ='adam', เมตริก=['ความแม่นยำ'])แบบส่งคืน
4.2 — สถาปัตยกรรม 2 — เลเยอร์ CNN ระดับลึก + ANN แบบตื้น
def sconstruct_model():smodel = ลำดับ()smodel.add(Conv2D(ตัวกรอง=64, kernel_size=(3, 3), input_shape=(128, 128, 3), การเปิดใช้งาน='relu'))smodel.add(Conv2D(ตัวกรอง=64, kernel_size=(3, 3), การเปิดใช้งาน='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(ตัวกรอง=128, kernel_size=(3, 3), การเปิดใช้งาน='relu'))smodel.add(Conv2D(ตัวกรอง=128, kernel_size=(3, 3), การเปิดใช้งาน='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(ตัวกรอง=128, kernel_size=(3, 3), การเปิดใช้งาน='relu'))smodel.add(Conv2D(ตัวกรอง=128, kernel_size=(3, 3), การเปิดใช้งาน='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(แบน())smodel.add (หนาแน่น (256, การเปิดใช้งาน = 'relu'))smodel.add (หนาแน่น (12, การเปิดใช้งาน = 'softmax'))#optimizer = อดัม(lr=0.001)smodel.compile (loss = 'categorical_crossentropy', เครื่องมือเพิ่มประสิทธิภาพ = 'adam', เมตริก = ['ความแม่นยำ'])#model.สรุป()กลับมาเป็นนางแบบ
4.3 — สถาปัตยกรรม 3 — เลเยอร์ CNN และ ANN แบบลึก
def cconstruct_model (อัตราการเรียนรู้):smodel = ลำดับ()smodel.add(Conv2D(ตัวกรอง=32, kernel_size=(3, 3), input_shape=(128, 128, 1), การเปิดใช้งาน='relu'))smodel.add(Conv2D(ตัวกรอง=32, kernel_size=(3, 3), การเปิดใช้งาน='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(ตัวกรอง=64, kernel_size=(3, 3), การเปิดใช้งาน='relu'))smodel.add(Conv2D(ตัวกรอง=64, kernel_size=(3, 3), การเปิดใช้งาน='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(ตัวกรอง=128, kernel_size=(3, 3), การเปิดใช้งาน='relu'))smodel.add(Conv2D(ตัวกรอง=128, kernel_size=(3, 3), การเปิดใช้งาน='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(แบน())smodel.add (หนาแน่น (256, การเปิดใช้งาน = 'relu'))smodel.add (หนาแน่น (256, การเปิดใช้งาน = 'relu'))smodel.add (หนาแน่น (12, การเปิดใช้งาน = 'softmax'))เครื่องมือเพิ่มประสิทธิภาพ = อดัม (lr=learningRate)smodel.compile(loss='categorical_crossentropy', เครื่องมือเพิ่มประสิทธิภาพ=เครื่องมือเพิ่มประสิทธิภาพ, เมตริก=['ความแม่นยำ'])smodel.สรุป()กลับมาเป็นนางแบบรุ่น=cconstruct_model(0.001)
โมดูล Python ชื่อ ANN Visualizer ช่วยให้เห็นภาพโครงข่ายประสาทเทียมด้วยโค้ดเพียงไม่กี่บรรทัด (Gheorghiu, 2022) ใช้โมดูล Graphviz ของ Keras และ Python เพื่อสร้างกราฟโครงข่ายประสาทเทียมที่เป็นระเบียบและน่าดึงดูด คุณมีความยืดหยุ่นในการมองเห็นเครือข่าย Deep Learning ทั้งหมดหรือเพียงแค่ Convolutional Neural Network ที่คุณสร้างขึ้นซึ่งขับเคลื่อนโดยความก้าวหน้าในการเรียนรู้เชิงลึก (Shah, 2018)
ใช้โครงสร้างต่อไปนี้ด้านล่างเพื่อสร้างการนำเสนอ PDF ของโครงข่ายประสาทเทียมของคุณ อย่างไรก็ตาม ก่อนหน้านั้น เราต้องรวบรวมโมเดลข้างต้นก่อน
รุ่น=สร้าง_รุ่น()
ann_viz (โมเดล, มุมมอง = True, ชื่อไฟล์ =”network.gv”, ชื่อ =”เครือข่าย MyNeural”)
- แบบอย่าง - โมเดลต่อเนื่องจาก Keras
- ดู - แสดงภาพกราฟหลังจากเรียกใช้ ann_viz() แล้ว
- ชื่อไฟล์ - ชื่อของไฟล์
- ชื่อ - ชื่อเฉพาะใดๆ เพื่อแสดงกราฟ
จาก ann_visualizer.visualize นำเข้า ann_vizann_viz(model, view=True, filename=”cconstruct_model”, title=”CNN — โมเดล 1 — สถาปัตยกรรมอย่างง่าย”)
เครื่องมือ Python ชื่อ Visualkeras ช่วยให้ดูการออกแบบโครงข่ายประสาทเทียม Keras ได้ง่ายขึ้น (แยกกันหรือเป็นส่วนหนึ่งของ TensorFlow) สามารถตอบสนองความต้องการด้านสไตล์ส่วนใหญ่ได้อย่างง่ายดาย โครงข่ายประสาทเทียมแบบ Convolutional (CNN) ได้รับประโยชน์อย่างมากจากการพัฒนาสถาปัตยกรรมแบบเลเยอร์ โมเดลส่วนใหญ่ รวมถึงเครือข่ายฟีดฟอร์เวิร์ดแบบธรรมดา ได้รับประโยชน์อย่างมากจากการสร้างสถาปัตยกรรมสไตล์กราฟ ซึ่งโมดูลนี้รองรับ (Gavrikov, 2022)
model1=สร้าง_โมเดล()model2=sconstruct_model()model3=cconstruct_model(0.009)นำเข้า Visualkerasจาก PIL นำเข้า ImageFontVisualkeras.layered_view (model1, ตำนาน = True)Visualkeras.layered_view (model2, ตำนาน = True)Visualkeras.layered_view (model3, ตำนาน = True)
พื้นที่ keras.utils.plot_model จัดเตรียมฟังก์ชัน inbuilt เพื่อลงจุดโมเดลที่กำหนดและคอมไพล์ผ่าน Keras โดยใช้แพ็คเกจ Graphviz และ pydot ในรูปแบบกราฟิกนั้นใช้งานง่ายน้อยกว่าแพ็คเกจที่ใช้ด้านบน แต่จะสรุปสถาปัตยกรรมพื้นฐานของโมเดลตามลำดับ (Team, nd)
tf.keras.utils.plot_model(รุ่น1,to_file="model.png",show_shapes=จริงshow_dtype=เท็จshow_layer_names=จริงrankdir="วัณโรค",expand_nested=จริงจุดต่อนิ้ว=96,layer_range=ไม่มี,show_layer_activations=จริง)
ไฮเปอร์พารามิเตอร์ไม่กี่ตัวที่ต้องพิจารณา:
- รูปแบบ: อินสแตนซ์ของโมเดลที่คอมไพล์ของ Keras หรืออ็อบเจ็กต์โมเดล
- to_file: ชื่อไฟล์ของรูปภาพ
- show_รูปร่าง: แสดงขนาดและรูปร่างของแต่ละชั้นในโครงข่ายประสาทเทียม
- show_layer_activation: ฟังก์ชั่นการเปิดใช้งานการแสดงผลที่ใช้ภายในเซลล์ประสาท
TensorBoard เป็นอินเทอร์เฟซแดชบอร์ดที่ช่วยให้ผู้ใช้เห็นภาพบันทึกของการเรียกใช้โมเดลต่างๆ บันทึกมีตั้งแต่การติดตามการวัดการตรวจสอบโมเดล เช่น ความแม่นยำ การเรียกคืน RMSE MAPE และ MSE ในยุคต่างๆ ไปจนถึงการสร้างกราฟแนวคิดของสถาปัตยกรรมของโมเดล เป็นเครื่องมือที่มีประสิทธิภาพในการแสดงภาพว่าโมเดลที่ต้องการตรงกับการออกแบบที่คาดหวังหรือไม่ พร้อมทั้งให้ข้อมูลเชิงลึกว่าโมเดลสามารถเปลี่ยนแปลงได้อย่างไรโดยใช้กราฟระดับปฏิบัติการ
หากต้องการใช้ฟังก์ชันนี้ เราจำเป็นต้องโหลด TensorBoard ก่อน จากนั้นจึงสร้างไดเร็กทอรีบันทึก
%load_ext เทนเซอร์บอร์ดจากวันที่และเวลานำเข้า วันที่เวลาจาก tensorflow นำเข้า keras# กำหนดการเรียกกลับ Keras TensorBoardlogdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)
สร้างการเรียกกลับ Keras TensorBoard และระบุไดเร็กทอรีบันทึกก่อนการฝึก คุณอาจตรวจสอบให้แน่ใจว่าข้อมูลกราฟได้รับการบันทึกสำหรับการแสดงภาพ TensorBoard โดยระบุการเรียกกลับนี้ให้กับ model.fit() เมื่อคุณเรียกใช้ TensorBoard อาจใช้เวลาโหลดสักครู่
รุ่น.พอดี(X2_รถไฟ, Y2_รถไฟ,ชุด_ขนาด=64,ยุค = 5,โทรกลับ=[tensorboard_callback])
หมายเหตุ: X2_train และ Y2_train เป็นชุดข้อมูลการฝึกที่ไม่แสดงในโค้ดด้านบน คุณสามารถแทนที่ข้อมูลนี้ด้วยข้อมูลการฝึกอบรมของคุณเองได้
TensorBoard จะแสดงกราฟระดับปฏิบัติการตามค่าเริ่มต้นเสมอ (แท็ก "ค่าเริ่มต้น" จะถูกไฮไลต์ทางด้านซ้าย) กราฟจะกลับหัวเมื่อเปรียบเทียบกับโค้ด เนื่องจากข้อมูลไหลจากล่างขึ้นบน แต่อย่างที่คุณเห็น กราฟมีลักษณะคล้ายกับคำอธิบายของโมเดล Keras โดยคร่าวๆ โดยมีขอบเพิ่มเติมที่นำไปสู่โหนดการคำนวณอื่นๆ (Tensorflow, 2022)
บริบทเพิ่มเติมเกี่ยวกับวิธีใช้ TensorBoard มีอยู่ในข้อมูลอ้างอิง
จากมุมมองเชิงพาณิชย์ ซึ่งผู้ใช้ต้องนำเสนอการวิเคราะห์ของตนต่อกลุ่มผู้มีส่วนได้ส่วนเสีย ไดอะแกรมเหล่านี้จะเพิ่มความซับซ้อนให้กับการสนทนามากขึ้น อาจไม่ใช่การเพิ่มมูลค่ามากนัก อย่างไรก็ตาม จากมุมมองทางวิชาการและการเรียนรู้ การใช้แพ็คเกจเหล่านี้เพื่อแสดงสถาปัตยกรรมการเรียนรู้เชิงลึกเหล่านี้ก็มีประโยชน์ สำหรับฉัน Visualizer ของ ANN โดดเด่นกว่าตัวอื่นๆ เนื่องจากแยกแยะไดอะแกรมได้ง่าย ในขณะที่เอาต์พุตกราฟของ TensorBoard ต้องใช้เทคนิคเพิ่มเติมก่อนจึงจะสามารถใช้ผลลัพธ์ได้
Gavrikov, P. (2022, 13 เมษายน) Visualkeras สำหรับ Keras / TensorFlow. GitHub https://github.com/paulgavrikov/visualkeras
Gheorghiu, T. (2022, 21 ตุลาคม) แอน วิชวลไลเซอร์. GitHub https://github.com/RedaOps/ann-visualizer
ชาห์ อ. (2018, 28 เมษายน) การแสดงภาพเครือข่ายประสาทเทียม (ANN) ด้วยโค้ดเพียงบรรทัดเดียว. ปานกลาง. https://towardsdatascience.com/visualizing-artificial-neural-networks-anns-with-just-one-line-of-code-b4233607209e
กองล้น (และ). การเรียนรู้ของเครื่อง — คุณเห็นภาพสถาปัตยกรรมโครงข่ายประสาทเทียมได้อย่างไร การแลกเปลี่ยนสแต็กวิทยาศาสตร์ข้อมูล สืบค้นเมื่อวันที่ 29 ตุลาคม 2022 จาก https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures
ทีมเค (nd) เอกสารประกอบของ Keras: ยูทิลิตีการพล็อตโมเดล. Keras.io สืบค้นเมื่อวันที่ 29 ตุลาคม 2022 จาก https://keras.io/api/utils/model_plotting_utils/#modeltodot-function
เทนเซอร์โฟลว์ (2022, 6 มกราคม) ตรวจสอบกราฟ TensorFlow | เทนเซอร์บอร์ด. เทนเซอร์โฟลว์ https://www.tensorflow.org/tensorboard/graphs
วิธีแสดงภาพสถาปัตยกรรมเครือข่ายประสาทเทียมใน Python เผยแพร่ซ้ำจากแหล่งที่มา https://towardsdatascience.com/how-to-visualize-neural-network-architectures-in-python-567cd2aa6d62?source=rss—-7f60cf5620c9—4 ผ่าน https:// ไปทาง datascience.com/feed
<!–
->
- Bitcoin
- bizbuildermike
- blockchain
- การปฏิบัติตามบล็อคเชน
- การประชุม blockchain
- ที่ปรึกษาบล็อคเชน
- coinbase
- เหรียญอัจฉริยะ
- เอกฉันท์
- การประชุม crypto
- การทำเหมือง crypto
- cryptocurrency
- ซึ่งกระจายอำนาจ
- Defi
- สินทรัพย์ดิจิทัล
- ethereum
- เรียนรู้เครื่อง
- โทเค็นที่ไม่สามารถทำซ้ำได้
- เพลโต
- เพลโตไอ
- เพลโตดาต้าอินเทลลิเจนซ์
- Platoblockchain
- เพลโตดาต้า
- เพลโตเกม
- รูปหลายเหลี่ยม
- หลักฐานการเดิมพัน
- W3
- ลมทะเล