imagenet-vgg-verydeep-19.mat格式详解
.mat是matlab生成的文件.用matlab打开文件imagenet-vgg-verydeep-19.mat可以帮助理解其结构.matlab代码如下:
a = open('D:\imagenet-vgg-verydeep-19.mat');
a的结构如下图所示.
对于读取imagenet-vgg-verydeep-19.mat,与matlab代码相应对的python代码为
matpath = r"D:\imagenet-vgg-verydeep-19.mat"
a = scipy.io.loadmat(matpath)
在python代码中a是一个dict类型,长度为3,对应图1的layers,classes,normalization. data["layers"]可以取到matlab中layers对应的数据结构,data["classes"]可以取到matlab中classes对应的数据结构,data["normalization"]可以取到matlab中normalization对应的数据结构.下面分开讨论.
layers
data['layers']是一个1*43的ndarray.data['layers'][0]就是一个长度为43的ndarray,对应vgg19的43个各层操作的结果.具体为对应关系为
0 对应 conv1_1 (3, 3, 3, 64)
1 对应 relu
2 对应 conv1_2 (3, 3, 64, 64)
3 对应 relu
4 对应 maxpool
5 对应 conv2_1 (3, 3, 64, 128)
6 对应 relu
7 对应 conv2_2 (3, 3, 128, 128)
8 对应 relu
9 对应 maxpool
10 对应 conv3_1 (3, 3, 128, 256)
11 对应 relu
12 对应 conv3_2 (3, 3, 256, 256)
13 对应 relu
14 对应 conv3_3 (3, 3, 256, 256)
15 对应 relu
16 对应 conv3_4 (3, 3, 256, 256)
17 对应 relu
18 对应 maxpool
19 对应 conv4_1 (3, 3, 256, 512)
20 对应 relu
21 对应 conv4_2 (3, 3, 512, 512)
22 对应 relu
23 对应 conv4_3 (3, 3, 512, 512)
24 对应 relu
25 对应 conv4_4 (3, 3, 512, 512)
26 对应 relu
27 对应 maxpool
28 对应 conv5_1 (3, 3, 512, 512)
29 对应 relu
30 对应 conv5_2 (3, 3, 512, 512)
31 对应 relu
32 对应 conv5_3 (3, 3, 512, 512)
33 对应 relu
34 对应 conv5_4 (3, 3, 512, 512)
35 对应 relu
36 对应 maxpool
37 对应 fullyconnected (7, 7, 512, 4096)
38 对应 relu
39 对应 fullyconnected (1, 1, 4096, 4096)
40 对应 relu
41 对应 fullyconnected (1, 1, 4096, 1000)
42 对应 softmax
看下面的代码
vgg_layers = data['layers'][0]
layer0 = vgg_layers[0]
layer0就对应conv1_1.注意这里是对应,要取到w和b的值要用下面的方法.
import scipy.io
matpath = r"D:\imagenet-vgg-verydeep-19.mat"
data = scipy.io.loadmat(matpath)
vgg_layers = data['layers'][0] # type 1*43
# vgg_layers[0]对应conv1_1,vgg_layers[1]对应relu,vgg_layers[2]对应conv1_2...
w = vgg_layers[0][0][0][0][0][0]
b = vgg_layers[0][0][0][0][0][1]
print(w.shape) # 输出是(3, 3, 3, 64)
print(b.shape) # (1, 64)
## 显示第0个filter的3个通道
print(w[:, :, 0, 0])
print(w[:, :, 1, 0])
print(w[:, :, 2, 0])
模仿上面的例子可以找到vgg任意一个中间层各参数的值.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义