Khi viết một bài báo / thuyết trình về một chủ đề liên quan đến mạng lưới thần kinh, người ta thường hình dung kiến trúc mạng.
Những cách tốt / đơn giản để tự động hình dung các kiến trúc phổ biến là gì?
Khi viết một bài báo / thuyết trình về một chủ đề liên quan đến mạng lưới thần kinh, người ta thường hình dung kiến trúc mạng.
Những cách tốt / đơn giản để tự động hình dung các kiến trúc phổ biến là gì?
Câu trả lời:
Nếu mạng nơ ron được đưa ra dưới dạng biểu đồ Tensorflow, thì bạn có thể hình dung biểu đồ này bằng TensorBoard .
Đây là cách CNN của MNIST trông như thế nào:
Bạn có thể tự thêm tên / phạm vi (như "bỏ học", "softmax", "fc1", "conv1", "conv2").
Sau đây chỉ là về đồ thị bên trái. Tôi bỏ qua 4 biểu đồ nhỏ ở nửa bên phải.
Mỗi hộp là một lớp với các tham số có thể học được. Đối với suy luận, thông tin chảy từ dưới lên trên. Dấu chấm lửng là các lớp không chứa các tham số đã học.
Màu sắc của các hộp không có ý nghĩa.
Tôi không chắc chắn về giá trị của các hộp nhỏ nét đứt ("độ dốc", "Adam", "lưu").
Gần đây tôi đã tạo ra một công cụ để vẽ kiến trúc NN và xuất SVG, được gọi là NN-SVG
Trong Caffe, bạn có thể sử dụng caffe / draw.py để vẽ protobuffer NetParameter:
Trong Matlab, bạn có thể sử dụng chế độ xem (mạng)
Keras.js :
Tôi sẽ thêm trực quan hóa ASCII bằng cách sử dụng keras-sequential-ascii (từ chối trách nhiệm: Tôi là tác giả).
Một mạng nhỏ cho CIFAR-10 (từ hướng dẫn này ) sẽ là:
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
Đối với VGG16, nó sẽ là:
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
Có một dự án nguồn mở được gọi là Netron
Netron là một người xem cho mạng lưới thần kinh, mô hình học tập sâu và máy học.
Netron hỗ trợ ONNX (.onnx, .pb), Keras (.h5, .keras), CoreML (.mlmodel) và TensorFlow Lite (.tflite). Netron có hỗ trợ thử nghiệm cho Caffe (.caffemodel), Caffe2 (dự đoán_net.pb), MXNet (-symbol.json), TensorFlow.js (model.json, .pb) và TensorFlow (.pb, .meta).
Đây là một cách khác - dotnets , sử dụng Graphviz , lấy cảm hứng rất nhiều từ bài đăng này của Thiago G. Martins.
Máy ảnh
Các mô-đun keras.utils.vis_utils cung cấp các chức năng tiện ích để vẽ một (graphviz sử dụng) mô hình Keras
Dưới đây cho thấy một mô hình mạng rằng lớp ẩn đầu tiên có 50 nơ-ron và mong đợi 104 biến đầu vào.
plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=True)
Gói Python conx
có thể trực quan hóa các mạng với kích hoạt với chức năng net.picture()
tạo ra SVG, PNG hoặc PIL Hình ảnh như thế này:
Conx được xây dựng trên Keras và có thể đọc trong các mô hình của Keras. Colormap tại mỗi ngân hàng có thể được thay đổi và nó có thể hiển thị tất cả các loại ngân hàng.
Thông tin chi tiết có thể được tìm thấy tại: http://conx.readthedocs.io/en/latest/
Tôi đã làm việc trên một trình hiển thị mạng thần kinh kéo và thả (và hơn thế nữa). Đây là một ví dụ về trực quan hóa cho một kiến trúc giống như LeNet. Các mô hình với fan-out và fan-in cũng được mô hình hóa khá dễ dàng. Bạn có thể truy cập trang web tại https://math.mit.edu/ennui/
Trong R, nnet
không đi kèm với chức năng cốt truyện, nhưng mã cho điều đó được cung cấp ở đây .
Ngoài ra, bạn có thể sử dụng gói tốt hơn gần đây và IMHO được gọi là neuralnet
có tính plot.neuralnet
năng, vì vậy bạn chỉ có thể thực hiện:
data(infert, package="datasets")
plot(neuralnet(case~parity+induced+spontaneous, infert))
neuralnet
không được sử dụng càng nhiều càng tốt nnet
vì nnet
là lớn tuổi hơn và được vận chuyển với r-cran. Nhưng neuralnet
có nhiều thuật toán đào tạo hơn, bao gồm cả backpropagation có khả năng hồi phục , thậm chí còn thiếu trong các gói như Tensorflow, và mạnh mẽ hơn nhiều đối với các lựa chọn siêu tham số, và có nhiều tính năng tổng thể hơn.
Có một số nỗ lực thay thế mới lạ về trực quan hóa mạng lưới thần kinh.
Xin vui lòng xem các bài viết sau:
Tuyệt vời 'Quét não AI' tiết lộ những gì máy móc nhìn thấy khi chúng học các kỹ năng mới
Bên trong một 'bộ não' AI - Học máy trông như thế nào?
Các phương pháp này được định hướng nhiều hơn theo hướng trực quan hóa hoạt động của mạng thần kinh, tuy nhiên, kiến trúc NN cũng phần nào hiển thị trên các sơ đồ kết quả.
Ví dụ:
Không phải tiện lợi cho các bài báo, nhưng rất hữu ích để hiển thị cho những người không biết nhiều về mạng lưới thần kinh, cấu trúc liên kết của họ có thể trông như thế nào. Thư viện Javascript này (Neataptic) cho phép bạn hình dung mạng của mình:
Bạn có thể đọc bài báo phổ biến Tìm hiểu về Mạng nơ-ron thông qua Trực quan hóa sâu , thảo luận về trực quan hóa các mạng chập. Việc thực hiện của nó không chỉ hiển thị từng lớp mà còn mô tả các kích hoạt, trọng lượng, giải mã và nhiều thứ khác được thảo luận sâu trong bài báo. Đó là mã caffe'
. Phần thú vị là bạn có thể thay thế mô hình được đào tạo trước bằng mô hình của riêng bạn.
Tensorspace-JS là một công cụ tuyệt vời để trực quan hóa kiến trúc mạng 3d:
và đây là một bài viết hay về cách viết một chương trình:
Netscope là công cụ hàng ngày của tôi cho các mô hình Caffe.