-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdataloader.py
More file actions
64 lines (49 loc) · 2.66 KB
/
dataloader.py
File metadata and controls
64 lines (49 loc) · 2.66 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
import torch
import torch.utils.data as Data
from readdata import DataReader
import numpy as np
def getDataLoader(train_file, test_file, batch_size, num_of_questions, max_step, kqn=False):
handle = DataReader(train_file, test_file, max_step, num_of_questions)
if not kqn:
# Load data
train_result = handle.getTrainData(kqn=False)
test_result = handle.getTestData(kqn=False)
# Case 1 : random vectors → (data, labels)
if isinstance(train_result, tuple):
train_data, train_labels = train_result
test_data, test_labels = test_result
dtrain = torch.tensor(np.array(train_data), dtype=torch.float32)
dtrain_labels = torch.tensor(np.array(train_labels), dtype=torch.long)
dtest = torch.tensor(np.array(test_data), dtype=torch.float32)
dtest_labels = torch.tensor(np.array(test_labels), dtype=torch.long)
train_dataset = Data.TensorDataset(dtrain, dtrain_labels)
test_dataset = Data.TensorDataset(dtest, dtest_labels)
# Case 2 : one-hot
else:
dtrain = torch.tensor(np.array(train_result), dtype=torch.float32)
dtest = torch.tensor(np.array(test_result), dtype=torch.float32)
train_dataset = Data.TensorDataset(dtrain)
test_dataset = Data.TensorDataset(dtest)
trainLoader = Data.DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
testLoader = Data.DataLoader(test_dataset, batch_size=batch_size, shuffle=False)
return trainLoader, testLoader
else:
train_data = handle.getTrainData(kqn=True)
test_data = handle.getTestData(kqn=True)
train_dataset = Data.TensorDataset(
torch.tensor(train_data['in_data'], dtype=torch.float32),
torch.tensor(train_data['seq_len'], dtype=torch.long),
torch.tensor(train_data['next_skills'], dtype=torch.float32),
torch.tensor(train_data['correctness'], dtype=torch.float32),
torch.tensor(train_data['mask'], dtype=torch.bool)
)
test_dataset = Data.TensorDataset(
torch.tensor(test_data['in_data'], dtype=torch.float32),
torch.tensor(test_data['seq_len'], dtype=torch.long),
torch.tensor(test_data['next_skills'], dtype=torch.float32),
torch.tensor(test_data['correctness'], dtype=torch.float32),
torch.tensor(test_data['mask'], dtype=torch.bool)
)
trainLoader = Data.DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
testLoader = Data.DataLoader(test_dataset, batch_size=batch_size, shuffle=False)
return trainLoader, testLoader