-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.py
More file actions
66 lines (52 loc) · 1.96 KB
/
utils.py
File metadata and controls
66 lines (52 loc) · 1.96 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from __future__ import print_function
import numpy as np
import torch.optim as optim
import pickle
def get_optimizer(model, args):
learning_rate = args.lr
param_group = []
for k, v in model.named_parameters():
if k.__contains__('base_network'):
param_group += [{'name': k, 'params': v, 'lr': learning_rate / 10}]
else:
param_group += [{'name': k, 'params': v, 'lr': learning_rate}]
optimizer = optim.SGD(param_group, lr=learning_rate, momentum=args.moment, weight_decay=args.l2_decay)
return optimizer
def adjust_learning_rate(optimizer, learning_rate):
for param_group in optimizer.param_groups:
name = param_group['name']
if name.__contains__('base_network'):
param_group['lr'] = learning_rate / 10
else:
param_group['lr'] = learning_rate
def shuffle_aligned_list(data):
num = data[0].shape[0]
p = np.random.permutation(num)
return [d[p] for d in data]
def batch_generator(raw_data, batch_size, shuffle=True):
data = [raw_data['X'], raw_data['Y']]
if shuffle:
data = shuffle_aligned_list(data)
batch_count = 0
while True:
if batch_count * batch_size + batch_size >= len(data[0]):
batch_count = 0
if shuffle:
data = shuffle_aligned_list(data)
start = batch_count * batch_size
end = start + batch_size
batch_count += 1
yield data[0][start:end], data[1][start:end]
def save_data(dataloader, name):
X, Y = [], []
for data, target in dataloader:
X.append(data.detach().cpu().numpy())
Y.append(target.detach().cpu().numpy())
X = np.concatenate(X, axis=0)
Y = np.concatenate(Y, axis=0)
print(X.shape, Y.shape)
data = {}
data['X'] = X
data['Y'] = Y
with open("data_preprocessed/{}.pkl".format(name), "wb") as pkl_file:
pickle.dump(data, pkl_file)