Cách trực quan hóa kiến ​​trúc mạng thần kinh bằng Python

Hướng dẫn nhanh cách tạo sơ đồ biểu diễn Mạng thần kinh của bạn bằng Jupyter hoặc Google Colab

Tín dụng hình ảnh - Được phát triển bởi tác giả bằng cách sử dụng visualkeras và Jupyter Notebook.

Thông thường, khi làm việc với Mạng thần kinh nhân tạo hoặc các biến thể khác như Mạng thần kinh tích chập hoặc Mạng thần kinh tái phát, chúng tôi muốn trực quan hóa và tạo biểu diễn sơ đồ cho mô hình đã biên dịch của mình. Điều này có thể giải quyết hai mục đích:

  1. Mặc dù việc xác định và đào tạo nhiều mô hình cho phép chúng tôi hình dung độ sâu của mô hình và so sánh các lớp khác nhau cũng như cách chúng được sắp xếp tuần tự.
  2. Cho phép hiểu rõ hơn về cấu trúc mô hình, các hàm kích hoạt được sử dụng trong mỗi lớp, hình dạng của từng lớp (số lượng nơ-ron) và các tham số cần huấn luyện

Có một số gói có sẵn trong python có thể tạo ra bản trình bày trực quan về Mô hình mạng thần kinh của chúng tôi. Ba gói đầu tiên có thể được sử dụng ngay cả trước khi đào tạo mô hình (mô hình chỉ cần được xác định và biên dịch); tuy nhiên, Tensor Boards yêu cầu người dùng huấn luyện mô hình dựa trên dữ liệu chính xác trước khi có thể hình dung được kiến ​​trúc.

  1. Trình hiển thị ANN
  2. Máy ảnh trực quan
  3. Cốt truyện mô hình Keras
  4. Ban Tenor
pip cài đặt visualkerascài đặt pip ann_visualizercài đặt pip graviz

Chúng ta không cần phải cài đặt riêng “Tensor Board” và “Keras Model Plot”. Điều này sẽ đi kèm với quá trình cài đặt ban đầu của Tensorflow & Keras.

Chúng tôi chỉ có thể sử dụng một số thư viện được liệt kê bên dưới. Hầu hết các thư viện có thể chuyển đổi mô hình TensorFlow thành sơ đồ mà không cần đào tạo rõ ràng về dữ liệu. Bạn có thể coi đây là một nguồn sự thật duy nhất. Một số thư viện như Pandas, Skimage và OpenCV sẽ hữu ích khi đọc dữ liệu hoặc hình ảnh có cấu trúc.

# Nhập các thư viện cần thiếtgấu trúc nhập khẩu như pdnhập numpy dưới dạng np # Nhập numpytừ dữ liệu nhập skimage, io # Nhập thư viện skimage (dữ liệu - Kiểm tra hình ảnh và dữ liệu mẫu.#io - Đọc, lưu và hiển thị hình ảnh.)từ skimage.color nhập rgb2grayimport matplotlib.pyplot as plt # Nhập matplotlib.pyplot (Khung vẽ đồ thị bằng Python.)% matplotlib inlineimport os # Mô-đun này cung cấp một cách di động để sử dụng chức năng phụ thuộc vào hệ điều hành.os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'cảnh báo nhập khẩu# Loại bỏ cảnh báoWarning.filterwarnings('bỏ qua')từ màn hình nhập IPython.displaynhập cv2 dưới dạng cv
từ nhập sklearn.metrics nhầm lẫn_matrix
từ sklearn.model_selection nhập train_test_splittừ các tiện ích nhập tensorflow.kerastừ tensorflow.keras.models nhập Tuần tự,load_modeltừ tensorflow.keras.layers nhập Dense, Dropout, Flatten, Conv2D, MaxPool2D, BatchNormalizationtừ tensorflow.keras.optimizers nhập Adamnhập tensorflow dưới dạng tfnhập seaborn dưới dạng sns

Một số liên kết hữu ích để khám phá thêm nội dung xung quanh ANN & CNN từ đầu.

Chúng tôi sẽ xác định ba mô hình CNN khác nhau với các siêu tham số khác nhau. Lý tưởng nhất là trong thế giới thực, chúng tôi nhắm đến việc triển khai các kiến ​​trúc khác nhau để tối đa hóa độ chính xác hoặc bất kỳ số liệu liên quan nào, vì chúng tôi đang xây dựng mô hình cho nhiệm vụ phân loại nhiều danh mục. Việc chúng tôi lựa chọn loại vấn đề sẽ không có bất kỳ tác động nào đến cách sử dụng các gói trực quan hóa.

Chúng tôi đã tạo các hàm do người dùng xác định để xây dựng ba mô hình khác nhau một cách riêng biệt với số lượng lớp CNN, tổng hợp tối đa và các lớp dày đặc khác nhau.

4.1 – Kiến trúc 1 – Lớp CNN nông + lớp ANN

def build_model():model = Sequential ()model.add(Conv2D(filters=64, kernel_size=(3, 3), input_shape=(128, 128, 1), kích hoạt='relu'))model.add(Conv2D(filters=64, kernel_size=(3, 3), kích hoạt='relu'))model.add(MaxPool2D((2, 2)))model.add(Làm phẳng())model.add(Dense(256, activate='relu'))model.add(Dense(12, activate='softmax'))model.compile(loss='categorical_crossentropy', Optimizer='adam', số liệu=['độ chính xác'])mô hình trả lại

4.2 - Kiến trúc 2 - Lớp CNN sâu + Lớp ANN nông

def sconstruct_model():smodel = Tuần tự()smodel.add(Conv2D(filters=64, kernel_size=(3, 3), input_shape=(128, 128, 3), kích hoạt='relu'))smodel.add(Conv2D(filters=64, kernel_size=(3, 3), activate='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filters=128, kernel_size=(3, 3), activate='relu'))smodel.add(Conv2D(filters=128, kernel_size=(3, 3), activate='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filters=128, kernel_size=(3, 3), activate='relu'))smodel.add(Conv2D(filters=128, kernel_size=(3, 3), activate='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Flatten())smodel.add(Dày đặc(256, kích hoạt='relu'))smodel.add(Dense(12, activate='softmax'))#optimizer = Adam(lr=0.001)smodel.compile(loss='categorical_crossentropy', Optimizer='adam', số liệu=['độ chính xác'])#model.summary()trả lại mẫu xe

4.3 — Kiến trúc 3 — Lớp CNN & ANN sâu

def cconstruct_model(learningRate):smodel = Tuần tự()smodel.add(Conv2D(filters=32, kernel_size=(3, 3), input_shape=(128, 128, 1), kích hoạt='relu'))smodel.add(Conv2D(filters=32, kernel_size=(3, 3), activate='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filters=64, kernel_size=(3, 3), activate='relu'))smodel.add(Conv2D(filters=64, kernel_size=(3, 3), activate='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filters=128, kernel_size=(3, 3), activate='relu'))smodel.add(Conv2D(filters=128, kernel_size=(3, 3), activate='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Flatten())smodel.add(Dày đặc(256, kích hoạt='relu'))smodel.add(Dày đặc(256, kích hoạt='relu'))smodel.add(Dense(12, activate='softmax'))trình tối ưu hóa = Adam(lr=learningRate)smodel.compile(loss='categorical_crossentropy', Optimizer=optimizer, số liệu=['độ chính xác'])smodel.summary()trả lại mẫu xemodel=cconstruct_model(0.001)

Mô-đun Python có tên ANN Visualizer giúp có thể trực quan hóa mạng lưới thần kinh nhân tạo bằng một vài dòng mã (Gheorghiu, 2022). Nó sử dụng mô-đun Graphviz của Keras và Python để tạo ra một biểu đồ mạng thần kinh gọn gàng và hấp dẫn. Bạn có thể linh hoạt hình dung toàn bộ Mạng học sâu hoặc chỉ Mạng thần kinh chuyển đổi mà bạn đã tạo được thúc đẩy bởi những tiến bộ trong học sâu (Shah, 2018).

Sử dụng cấu trúc sau đây để tạo bản trình bày pdf của mạng thần kinh của bạn. Tuy nhiên, trước đó, chúng ta cần biên dịch các mô hình trên.

mô hình=build_model()

ann_viz(model, view=True, filename=”network.gv”, title=”MyNeural Network”)

  • người mẫu - Mô hình tuần tự từ Keras
  • xem - Trực quan hóa biểu đồ sau khi ann_viz() được gọi
  • tên tập tin - Tên của tập tin
  • tiêu đề - Bất kỳ tiêu đề cụ thể nào để biểu thị biểu đồ
từ ann_visualizer.visualize nhập ann_vizann_viz(model, view=True, filename=”cconstruct_model”, title=”CNN — Mô hình 1 — Kiến trúc đơn giản”)
Hình 1: Ảnh chụp nhanh của constructor_model() được tạo bằng ANN Visualizer. Tín dụng - Hình ảnh được tác giả phát triển bằng Jupyter Notebook. đầu ra ban đầu quá lớn để có thể vừa với hình ảnh ở đây, do đó ảnh chụp nhanh các lớp dưới cùng được sử dụng ở đây.

Một công cụ Python có tên Visualkeras giúp dễ dàng xem các thiết kế mạng thần kinh Keras hơn (riêng biệt hoặc là một phần của TensorFlow). Phần lớn các nhu cầu về kiểu dáng có thể được đáp ứng một cách dễ dàng. Mạng nơ-ron tích chập (CNN) được hưởng lợi đáng kể từ việc phát triển các kiến ​​trúc kiểu phân lớp. Hầu hết các mô hình, bao gồm cả các mạng chuyển tiếp nguồn cấp dữ liệu đơn giản, được hưởng lợi rất nhiều từ việc tạo ra kiến ​​trúc kiểu đồ thị mà mô-đun này hỗ trợ (Gavrikov, 2022).

model1=struct_model()model2=sconstruct_model()model3=cconstruct_model(0.009)nhập khẩu visualkeratừ PIL nhập ImageFontvisualkeras.layered_view(model1, legend=True)visualkeras.layered_view(model2, legend=True)visualkeras.layered_view(model3, legend=True)
Hình 2. Minh họa biểu diễn sơ đồ của ba kiến ​​trúc mô hình khác nhau. Tín dụng - Hình ảnh được tác giả phát triển bằng Jupyter Notebook.

Sản phẩm keras.utils.plot_model cung cấp các hàm sẵn có để vẽ mô hình được xác định và biên dịch thông qua Keras bằng cách sử dụng các gói Graphviz và pydot. Về mặt đồ họa, nó kém trực quan hơn các gói được sử dụng ở trên, nhưng nó phác thảo kiến ​​trúc cơ bản của một mô hình tuần tự (Team, nd).

tf.keras.utils.plot_model(mô hình1,to_file="model.png",show_shapes=Đúng,show_dtype=Sai,show_layer_names=Đúng,xếp hạng="TB",Expand_nested=Đúng,dpi=96,layer_range=Không có,show_layer_activations=Đúng,)

Một số siêu tham số cần xem xét:

  1. mô hình: Một phiên bản của mô hình hoặc đối tượng mô hình được biên dịch Keras
  2. nộp: Tên tệp của hình ảnh
  3. show_shapes: hiển thị kích thước và hình dạng của từng lớp trong mạng lưới thần kinh
  4. show_layer_activation: hiển thị các chức năng kích hoạt được sử dụng trong các nơ-ron
Hình 3. Minh họa đầu ra của tf.keras.utils.plot_model(). Tín dụng - Hình ảnh được tác giả phát triển bằng Jupyter Notebook.

TensorBoard là giao diện bảng điều khiển cho phép người dùng trực quan hóa nhật ký trên các lần chạy mô hình khác nhau. Nhật ký có thể bao gồm từ việc theo dõi bất kỳ biện pháp xác thực mô hình nào như độ chính xác, thu hồi, RMSE, MAPE và MSE qua các thời kỳ khác nhau cho đến tạo biểu đồ khái niệm về kiến ​​trúc của mô hình. Đây là một công cụ mạnh mẽ để trực quan hóa xem mô hình dự định có phù hợp với thiết kế dự kiến ​​hay không đồng thời cung cấp thông tin chi tiết về cách có thể thay đổi mô hình bằng biểu đồ cấp độ tùy chọn.

Để sử dụng chức năng này, trước tiên chúng ta cần tải TensorBoard rồi tạo thư mục nhật ký.

%load_ext bảng mạch kéotừ datetime nhập datetimetừ khóa nhập khẩu tensorflow# Xác định lệnh gọi lại Keras TensorBoard.logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)

Tạo lệnh gọi lại Keras TensorBoard và chỉ định thư mục nhật ký trước khi đào tạo. Bạn có thể đảm bảo rằng dữ liệu biểu đồ được ghi lại để trực quan hóa TensorBoard bằng cách cung cấp lệnh gọi lại này cho model.fit(). Sau khi bạn gọi TensorBoard, quá trình tải có thể mất vài phút.

model.fit(Tàu X2, tàu Y2,batch_size=64,kỷ nguyên=5,callbacks=[tensorboard_callback])

Lưu ý: X2_train và Y2_train là các tập dữ liệu huấn luyện không được phản ánh trong các mã ở trên. Bạn có thể thay thế dữ liệu này bằng bất kỳ dữ liệu đào tạo nào của riêng bạn.

TensorBoard luôn hiển thị biểu đồ cấp độ op theo mặc định. (Thẻ “Mặc định” được đánh dấu ở bên trái.) Biểu đồ lộn ngược so với mã vì dữ liệu chảy từ dưới lên trên. Nhưng như bạn có thể thấy, biểu đồ gần giống với mô tả của mô hình Keras, với các cạnh bổ sung dẫn đến các nút tính toán khác (Tensorflow, 2022).

Hình 4. Minh họa đầu ra của TensorBoard. Tín dụng - Hình ảnh được tác giả phát triển bằng Jupyter Notebook.

Bạn có thể tìm thêm ngữ cảnh về cách sử dụng TensorBoard trong phần Tham khảo.

Từ quan điểm thương mại, trong đó người dùng phải trình bày phân tích của họ cho một nhóm các bên liên quan, những sơ đồ này sẽ khiến cuộc thảo luận trở nên phức tạp hơn. Chúng có thể không phải là một giá trị gia tăng cực độ. Tuy nhiên, từ góc độ học thuật và học tập, việc sử dụng các gói này để hiển thị các kiến ​​trúc học sâu này là rất đáng giá. Đối với tôi, trình hiển thị ANN nổi bật hơn phần còn lại vì nó dễ hiểu sơ đồ, trong khi đầu ra biểu đồ của TensorBoard đòi hỏi nhiều kỹ thuật hơn trước khi có thể sử dụng kết quả.

Gavrikov, P. (2022, ngày 13 tháng XNUMX). visualkeras cho Keras / TensorFlow. GitHub. https://github.com/paulgavrikov/visualkeras

Gheorghiu, T. (2022, ngày 21 tháng XNUMX). Trình hiển thị ANN. GitHub. https://github.com/RedaOps/ann-visualizer

Shah, A. (2018, ngày 28 tháng XNUMX). Trực quan hóa Mạng thần kinh nhân tạo (ANN) chỉ bằng một dòng mã. Trung bình. https://towardsdatascience.com/visualizing-artificial-neural-networks-anns-with-just-one-line-of-code-b4233607209e

Tràn ngăn xếp. (thứ). học máy - Bạn hình dung kiến ​​trúc mạng thần kinh như thế nào? Trao đổi ngăn xếp khoa học dữ liệu. Truy cập ngày 29 tháng 2022 năm XNUMX, từ https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures

Đội, K. (nd). Tài liệu về Keras: Tiện ích vẽ mô hình. Keras.io. Truy cập ngày 29 tháng 2022 năm XNUMX, từ https://keras.io/api/utils/model_plotting_utils/#modeltodot-function

Dòng chảy căng. (2022, ngày 6 tháng XNUMX). Kiểm tra đồ thị TensorFlow | TensorBoard. TenorFlow. https://www.tensorflow.org/tensorboard/graphs

Cách trực quan hóa Kiến trúc mạng thần kinh bằng Python được xuất bản lại từ nguồn https://towardsdatascience.com/how-to-visualize-neural-network-architectures-in-python-567cd2aa6d62?source=rss—-7f60cf5620c9—4 qua https:// hướng tớidatascience.com/feed

<!–

->

Dấu thời gian:

Thêm từ Tư vấn chuỗi khối