3
3
import numpy as np
4
4
import torch
5
5
import nni
6
- from torch .utils .data import SubsetRandomSampler
6
+ from torch .utils .data import SubsetRandomSampler , SequentialSampler
7
7
from torchvision import transforms
8
8
from torchvision .datasets import CIFAR10
9
9
from nni .nas .evaluator .pytorch import DataLoader , Classification
21
21
22
22
23
23
ARCHITECTURES_PATH = "/kaggle/input/second-dataset/dataset"
24
- MAX_EPOCHS = 70
24
+ MAX_EPOCHS = 1
25
25
LEARNING_RATE = 0.025
26
26
BATCH_SIZE = 96
27
27
NUM_MODLES = 2000
28
28
CIFAR_MEAN = [0.49139968 , 0.48215827 , 0.44653124 ]
29
29
CIFAR_STD = [0.24703233 , 0.24348505 , 0.26158768 ]
30
30
31
+ SEED = 228
32
+ # random.seed(SEED)
33
+ np .random .seed (SEED )
34
+ torch .manual_seed (SEED )
35
+ torch .cuda .manual_seed_all (SEED ) # если есть GPU
36
+ torch .backends .cudnn .deterministic = True
37
+ torch .backends .cudnn .benchmark = False
38
+
31
39
32
40
def load_json_from_directory (directory_path ):
33
41
json_data = []
@@ -70,7 +78,7 @@ def get_data_loaders(batch_size=512):
70
78
)
71
79
num_samples = len (train_data )
72
80
indices = np .random .permutation (num_samples )
73
- split = num_samples // 2
81
+ split = int ( num_samples * 0.75 )
74
82
75
83
search_train_loader = DataLoader (
76
84
train_data ,
@@ -80,10 +88,10 @@ def get_data_loaders(batch_size=512):
80
88
)
81
89
82
90
search_valid_loader = DataLoader (
83
- train_data ,
91
+ train_data ,
84
92
batch_size = batch_size ,
85
93
num_workers = 6 ,
86
- sampler = SubsetRandomSampler (indices [split :]),
94
+ sampler = SequentialSampler (indices [split :]),
87
95
)
88
96
89
97
return search_train_loader , search_valid_loader
@@ -100,9 +108,9 @@ def train_model(
100
108
with model_context (architecture ):
101
109
model = DartsSpace (width = 16 , num_cells = 10 , dataset = 'cifar' )
102
110
103
- device = torch .device ("cuda" if torch .cuda .is_available () else "cpu" )
104
- if torch .cuda .device_count () > 1 :
105
- model = torch .nn .DataParallel (model )
111
+ device = torch .device ("cuda:0 " if torch .cuda .is_available () else "cpu" )
112
+ # if torch.cuda.device_count() > 1:
113
+ # model = torch.nn.DataParallel(model)
106
114
model .to (device )
107
115
108
116
evaluator = Lightning (
@@ -115,7 +123,8 @@ def train_model(
115
123
trainer = Trainer (
116
124
gradient_clip_val = 5.0 ,
117
125
max_epochs = max_epochs ,
118
- fast_dev_run = fast_dev_run
126
+ fast_dev_run = fast_dev_run ,
127
+ devices = [0 ]
119
128
),
120
129
train_dataloaders = train_loader ,
121
130
val_dataloaders = valid_loader
@@ -130,7 +139,7 @@ def evaluate_and_save_results(
130
139
architecture ,
131
140
model_id , # Новый обязательный параметр для идентификации модели
132
141
valid_loader ,
133
- folder_name = "results "
142
+ folder_name = "results_seq_0 "
134
143
):
135
144
"""
136
145
Оценивает модель на валидационном наборе данных и сохраняет результаты в JSON.
@@ -154,6 +163,7 @@ def evaluate_and_save_results(
154
163
155
164
with torch .no_grad ():
156
165
for images , labels in valid_loader :
166
+ print (labels )
157
167
images , labels = images .to (device ), labels .to (device )
158
168
outputs = model (images )
159
169
outputs = torch .softmax (outputs , dim = 1 )
@@ -201,5 +211,5 @@ def evaluate_and_save_results(
201
211
clear_output (wait = True )
202
212
203
213
evaluate_and_save_results (
204
- model , architecture , idx , valid_loader = search_valid_loader , folder_name = "results "
214
+ model , architecture , idx , valid_loader = search_valid_loader , folder_name = "results_seq_0 "
205
215
) # Оцениваем и сохраняем архитектуры, предсказания на тестовом наборе CIFAR10 и accuracy
0 commit comments