-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy path__init__.py
More file actions
38 lines (30 loc) · 1.03 KB
/
__init__.py
File metadata and controls
38 lines (30 loc) · 1.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from __future__ import print_function
import torch
import numpy as np
def save(path, iteration, model, optimizer, **kwargs):
model_state = None
optimizer_state = None
if model is not None:
model_state = model.state_dict()
if optimizer is not None:
optimizer_state = optimizer.state_dict()
torch.save(
dict(iteration=iteration,
model_state=model_state,
optimizer_state=optimizer_state,
**kwargs),
path
)
def resume(path, model, optimizer):
if torch.cuda.is_available():
snapshot = torch.load(path)
else:
snapshot = torch.load(path, map_location="cpu")
model_state = snapshot.pop('model_state', snapshot)
optimizer_state = snapshot.pop('optimizer_state', None)
if model is not None and model_state is not None:
print("load model")
model.load_state_dict(model_state)
if optimizer is not None and optimizer_state is not None:
optimizer.load_state_dict(optimizer_state)
return snapshot