自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

可視化深度學(xué)習(xí)模型架構(gòu)的六個(gè)常用的方法總結(jié)

人工智能 深度學(xué)習(xí)
本文將使用 Keras 和 PyTorch 構(gòu)建一個(gè)簡(jiǎn)單的深度學(xué)習(xí)模型,然后使用不同的工具和技術(shù)可視化其架構(gòu)。

可視化有助于解釋和理解深度學(xué)習(xí)模型的內(nèi)部結(jié)構(gòu)。 通過(guò)模型計(jì)算圖的可視化可以弄清楚神經(jīng)網(wǎng)絡(luò)是如何計(jì)算的,對(duì)于模型的可視化主要包括以下幾個(gè)方面:

  • 模型有多少層
  • 每層的輸入和輸出形狀
  • 不同的層是如何連接的?
  • 每層使用的參數(shù)
  • 使用了不同的激活函數(shù)

本文將使用 Keras 和 PyTorch 構(gòu)建一個(gè)簡(jiǎn)單的深度學(xué)習(xí)模型,然后使用不同的工具和技術(shù)可視化其架構(gòu)。

使用Keras構(gòu)建模型

import keras
# Train the model on Fashion MNIST dataset
(train_images, train_labels), _ = keras.datasets.fashion_mnist.load_data()
train_images = train_images / 255.0
# Define the model.
model = keras.models.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(32, activation='relu'),
keras.layers.Dropout(0.2),
keras.layers.Dense(10, activation='softmax')
])
#Compile the model
model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])

Keras 內(nèi)置可視化模型

在 Keras 中顯示模型架構(gòu)的最簡(jiǎn)單就是使用 summary()方法

model.summary()

這個(gè)方法是keras內(nèi)置的實(shí)現(xiàn),他的原理很簡(jiǎn)單。就是遍歷所有模型層并打印相關(guān)細(xì)節(jié),如層的輸入維度和輸出維度、參數(shù)數(shù)量、激活類型等,我們也可以用for訓(xùn)練遍歷實(shí)現(xiàn),代碼如下:

for layer in model.layers:
print("Layer Name: " + layer.name)
print("Type of layer: " + layer.__class__.__name__)
print("Input dimesion: {}".format(layer.input_shape[1:]))
print("Output dimesion: {}".format(layer.output_shape[1:]))
print("Parameter Count: {}".format( layer.count_params()))
try:
print("Activation : " + layer.activation.__name__)
print(" ")
except:
print(" ")

這種方法只能提供一些簡(jiǎn)單的信息,下面我們介紹一些更好用的方法

Keras vis_utils

keras.utils.vis_utils 提供了使用 Graphviz 繪制 Keras 模型的實(shí)用函數(shù)。但是在使用之前需要安裝一些其他的依賴:

pip install pydot
pip install pydotplus
pip install graphviz

使用Graphviz,還需要在系統(tǒng) PATH 中添加 Graphviz bin 文件夾的路徑,設(shè)置完成后就可以使用了

model_img_file = 'model.png'
tf.keras.utils.plot_model(model, to_file=model_img_file,
show_shapes=True,
show_layer_activations=True,
show_dtype=True,
show_layer_names=True )

Visualkears

Visualkears 庫(kù)只支持 CNN(卷積神經(jīng)網(wǎng)絡(luò))的分層樣式架構(gòu)生成和大多數(shù)模型的圖形樣式架構(gòu),包括普通的前饋網(wǎng)絡(luò)。

pip install visualkeras

layered view() 用于查看 CNN 模型架構(gòu)

visualkeras.layered_view(model,legend=True, draw_volume=True)

TensorBoard

TensorBoard 的 Graphs 可查看模型結(jié)構(gòu)圖。對(duì)于 Tensorboard,使用如下的方法。

import tensorflow as tf
from datetime import datetime
import tensorboard

如果需要在notebook中使用,可以用下面的語(yǔ)句加載 Tensorboard 擴(kuò)展

%load_ext tensorboard

在 fit() 中使用的 Keras Tensorboard Callback

# Define the Keras TensorBoard callback.
logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)
# Train the model.
model.fit(
train_images,
train_labels,
batch_size=64,
epochs=5,
callbacks=[tensorboard_callback])

model.save("model.h5")

模型訓(xùn)練完成后,啟動(dòng) TensorBoard 并等待 UI 加載。

%tensorboard --logdir logs

通過(guò)單擊的“Graphs”就可以看到模型的可視化結(jié)果了。

注:在Pytorch 1.8以后中提供了from torch.utils.tensorboard import SummaryWriter也可以生成tensorboard的數(shù)據(jù),與tensorboard 對(duì)接。

Netron

Netron 是專門為神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)和機(jī)器學(xué)習(xí)模型設(shè)計(jì)的查看器。 它支持 Keras、TensorFlow lite、ONNX、Caffe,并對(duì) PyTorch、TensorFlow 有實(shí)驗(yàn)性支持。

pip install netron

瀏覽器并輸入netron.app ,請(qǐng)單擊“打開模型”并選擇 h5 文件的路徑上傳。

就可以看到每一層的可視化結(jié)果了。

在 PyTorch 中構(gòu)建一個(gè)簡(jiǎn)單的深度學(xué)習(xí)模型

import torch
from torch import nn
# Get cpu or gpu device for training.
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Using {device} device")
class NeuralNetwork(nn.Module):
def __init__(self):
super(NeuralNetwork, self).__init__()
self.flatten = nn.Flatten()
self.linear_relu_stack = nn.Sequential(
nn.Linear(28*28, 512),
nn.ReLU(),
nn.Linear(512, 512),
nn.ReLU(),
nn.Linear(512, 10),
)def forward(self, x):
x = self.flatten(x)
logits = self.linear_relu_stack(x)
return logits
pytorch_model = NeuralNetwork().to(device)
x = torch.randn( 512, 28,28,1).requires_grad_(True)
y = pytorch_model(x)

查看模型架構(gòu)最直接的方法是打印它。

print(pytorch_model)

雖然可以看到完整的模型架構(gòu),但是效果還沒有Keras的內(nèi)置函數(shù)效果好,下面介紹一個(gè)很好用的庫(kù)解決這個(gè)問題。

PyTorchViz

PyTorchViz 依賴于graphviz,所以也需要安裝:

pip install graphviz
pip install torchviz

使用PyTorchViz 可視化模型非常簡(jiǎn)單,只需要一個(gè)方法即可:

from torchviz import make_dot
make_dot(y, params=dict(list(pytorch_model.named_parameters()))).render("torchviz", format="png")

上面的代碼生成了一個(gè)torchviz.png文件,如下圖。

總結(jié)

可視化模型架構(gòu)可以更好的解釋深度學(xué)習(xí)模型。 模型結(jié)構(gòu)可視化顯示層數(shù)、每層數(shù)據(jù)的輸入和輸出形狀、使用的激活函數(shù)以及每層中的參數(shù)數(shù)量,為優(yōu)化模型提供更好的理解。


責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2018-03-26 20:04:16

深度學(xué)習(xí)

2024-04-25 16:27:07

數(shù)據(jù)可視化Python

2016-12-15 09:53:07

自學(xué)編程技巧

2021-03-16 09:00:00

深度學(xué)習(xí)人工智能傳感器

2022-11-28 15:04:42

數(shù)據(jù)可視化工具

2023-11-26 18:26:26

聚類評(píng)價(jià)指標(biāo)監(jiān)督學(xué)習(xí)

2021-04-22 08:00:00

人工智能機(jī)器學(xué)習(xí)數(shù)據(jù)

2010-03-18 14:07:09

無(wú)線USB技術(shù)特點(diǎn)

2019-12-18 14:40:09

數(shù)據(jù)可視化后端技術(shù)Python

2020-08-04 13:40:02

數(shù)據(jù)可視化熱力圖表格

2021-11-07 07:53:18

數(shù)據(jù)可視化圖形數(shù)據(jù)

2018-03-26 20:07:25

深度學(xué)習(xí)

2013-05-20 10:42:12

2009-07-08 11:27:05

敏捷方法

2022-03-01 15:23:02

設(shè)計(jì)師創(chuàng)新互聯(lián)網(wǎng)

2023-05-09 07:09:02

2014-04-23 09:21:38

大數(shù)據(jù)

2017-07-10 14:18:34

微服務(wù)架構(gòu)可視化

2017-07-18 15:15:57

數(shù)據(jù)可視化細(xì)節(jié)層次分析

2017-07-13 09:21:05

大數(shù)據(jù)數(shù)據(jù)可視化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)