notes_serialization.md 916 字节
Newer Older
C
chen 已提交
1
# 序列化的相关语义
W
wizardforcel 已提交
2

飞龙 已提交
3 4
> 译者:[yuange250](https://github.com/yuange250)

C
chen 已提交
5
## 最佳方案
W
wizardforcel 已提交
6

C
chen 已提交
7
### 保存模型的推荐方法
W
wizardforcel 已提交
8

C
chen 已提交
9
Pytorch主要有两种方法可用于序列化和保存一个模型。
W
wizardforcel 已提交
10

片刻小哥哥's avatar
片刻小哥哥 已提交
11
第一种只存取模型的参数(更为推荐):
C
chen 已提交
12
保存参数:
W
wizardforcel 已提交
13 14 15 16 17 18

```py
torch.save(the_model.state_dict(), PATH)

```

C
chen 已提交
19
读取参数:
W
wizardforcel 已提交
20 21 22 23 24 25 26

```py
the_model = TheModelClass(*args, **kwargs)
the_model.load_state_dict(torch.load(PATH))

```

C
chen 已提交
27
第二种方法则将整个模型都保存下来:
W
wizardforcel 已提交
28 29 30 31 32 33

```py
torch.save(the_model, PATH)

```

C
chen 已提交
34
读取的时候也是读取整个模型:
W
wizardforcel 已提交
35 36 37 38 39 40

```py
the_model = torch.load(PATH)

```

C
chen 已提交
41
在第二种方法中, 由于特定的序列化的数据与其特定的类别(class)相绑定,并且在序列化的时候使用了固定的目录结构,所以在很多情况下,如在其他的一些项目中使用,或者代码进行了较大的重构的时候,很容易出现问题。