知识点回顾:
- 三种不同的模型可视化方法:推荐torchinfo打印summary+权重分布可视化
- 进度条功能:手动和自动写法,让打印结果更加美观
- 推理的写法:评估模式
作业:调整模型定义时的超参数,对比下效果。
一、模型结构的可视化
理解一个深度学习网络最重要的两点分别是:了解损失是如何定义的,要知道损失从何而来,能够把抽象的任务通过损失函数量化出来;还要了解参数总量,要知道每一层的设计,因为层设计决定参数总量
为了了解参数总量,我们需要知道层设计,以及每一层参数的参数总量,就需要用到一下几个层可视化的工具
1、nn.model自带的方法,通过其内置功能,直接输出模型结构
print(model)
MLP(
(fc1): Linear(in_features=4, out_features=10, bias=True)
(relu): ReLU()
(fc2): Linear(in_features=10, out_features=3, bias=True)
)
这是最基础、简单的方法,直接打印模型对象,输出模型的结构,显示模型中各个层的名称和参数信息
# nn.Module 的内置功能,返回模型的可训练参数迭代器
for name, param in model.named_parameters():
print(f"Parameter name: {name}, Shape: {param.shape}")
可以将模型中带有weight的参数(即权重)提取出来,并转为 numpy 数组形式,对其计算统计分布,并且绘制可视化图表
# 提取权重数据
import numpy as np
weight_data = {}
for name, param in model.named_parameters():
if 'weight' in name:
weight_data[name] = param.detach().cpu().numpy()
# 可视化权重分布
fig, axes = plt.subplots(1, len(weight_data), figsize=(15, 5))
fig.suptitle('Weight Distribution of Layers')
for i, (name, weights) in enumerate(weight_data.items()):
# 展平权重张量为一维数组
weights_flat = w


2022

被折叠的 条评论
为什么被折叠?



