i am trying to find the HPO for rnn based model .this is a modular coding based project .complete code run in google colab after mounting the drive.for HPO ray tune is used but it gives an error .the code and error are given below:
Code :
def train_fnd(config):
model_rnn.to(device)
criterion = nn.BCELoss()
optimizer = optim.SDG(model_rnn.parameters(),lr=config[“lr”])
train_loader = dl.dataset(c.train_data_path,batch_size=config[“batch_size”])
val_loader = dl.dataset(c.val_data_path,batch_size=config[“batch_size”])
for epoch in range(10):
running_loss = 0.0
epoch_step = 0
for inputs,labels,inputs_len,_ in tqdm(train_loader):
labels = torch.tensor(labels,dtype=torch.float32).view(-1,1)
inputs = inputs.to(device)
labels = labels.to(device)
inputs_len = torch.IntTensor(inputs_len).to(device)
# zero the parameter gradients
optimizer.zero_grad()
# forward + backward + optimize
outputs = model_rnn(inputs,inputs_len)
loss = criterion(outputs,labels)
loss.backward()
optimizer.step()
#print statistics
running_loss +=loss.item()
#validation loss
val_loss = 0.0
val_steps =0
total = 0
correct =0
for inputs,labels,inputs_len,_ in tqdm(val_loader):
with torch.no_grad():
labels = torch.tensor(labels,dtype=torch.float32).view(-1,1)
inputs = inputs.to(device)
labels = labels.to(device)
inputs_len = torch.IntTensor(inputs_len).to(device)
outputs = model_rnn(inputs,inputs_len)
loss = criterion(outputs,labels)
val_loss +=loss.item()
print("training loss :",running_loss/len(train_loader))
print("validation loss :",val_loss/len(val_loader))
session.report({"loss":(val_loss/len(val_loader))})
print(“finished training”)
def test(model_rnn):
test_loader =dl.dataset(data_path=c.test_data_path,batch_size=4)
correct = 0
total = 0
test_loss =0
criterion = nn.BCELoss()
with torch.no_grad():
for inputs,labels,inputs_len,_ in tqdm(test_loader):
labels = torch.tensor(labels,dtype=torch.float32).view(-1,1)
inputs = inputs.to(device)
labels = labels.to(device)
inputs_len = torch.IntTensor(inputs_len).to(device)
outputs = model_rnn(inputs,inputs_len)
loss = criterion(outputs,labels)
test_loss +=loss.item()
return test_loss/len(test_loader)
def main (num_samples = 10,max_num_epochs =10,gpus_per_trial = 2):
config ={
“lr”:tune.loguniform(1e-4,1e-1),
“batch_size”:tune.choice([16,32,64])
}
scheduler = ASHAScheduler(
max_t=max_num_epochs,
grace_period=1,
reduction_factor=2)
tuner = tune.Tuner(
tune.with_resources(
tune.with_parameters(train_fnd),
resources = {“cpu”:2, “gpu”: gpus_per_trial}
),
tune_config = tune.TuneConfig(
metric=“loss”,
mode=“min”,
scheduler=scheduler,
num_samples=num_samples,
),
param_space=config,
)
results = tuner.fit()
best_result = results.get_best_result(“loss”,“min”)
main(num_samples=2, max_num_epochs=2, gpus_per_trial=0)
Error :
plz help me