Skip to content

Commit de3ff79

Browse files
author
phy68
committed
save for py3
1 parent 2cd66a5 commit de3ff79

File tree

5 files changed

+483
-63
lines changed

5 files changed

+483
-63
lines changed

main.py

Lines changed: 51 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from __future__ import print_function
12
import os,sys
23
import shutil
34
import time
@@ -51,22 +52,22 @@ def main():
5152
model = resnet_example.resnet14(pretrained=False, num_classes=5, input_channels=1)
5253
model.cuda()
5354

54-
print "Loaded model: ",model
55+
print("Loaded model: ",model)
5556

5657

5758
# define loss function (criterion) and optimizer
5859
criterion = nn.CrossEntropyLoss().cuda()
5960

6061
# training parameters
61-
lr = 1.0e-3
62+
lr = 1.0e-4
6263
momentum = 0.9
6364
weight_decay = 1.0e-3
64-
batchsize = 50
65-
batchsize_valid = 500
65+
batchsize = 20
66+
batchsize_valid = 20
6667
start_epoch = 0
6768
epochs = 1500
68-
nbatches_per_epoch = 10000/batchsize
69-
nbatches_per_valid = 1000/batchsize_valid
69+
nbatches_per_epoch = int(100/batchsize)
70+
nbatches_per_valid = int(100/batchsize_valid)
7071

7172
optimizer = torch.optim.SGD(model.parameters(), lr,
7273
momentum=momentum,
@@ -75,8 +76,8 @@ def main():
7576
cudnn.benchmark = True
7677

7778
# dataset
78-
iotrain = LArCVDataset("train_dataloader.cfg", "ThreadProcessor", loadallinmem=True)
79-
iovalid = LArCVDataset("valid_dataloader.cfg", "ThreadProcessorTest")
79+
iotrain = LArCVDataset("train_dataloader.cfg", "ThreadProcessor", loadallinmem=False)
80+
iovalid = LArCVDataset("valid_dataloader.cfg", "ThreadProcessorTest",loadallinmem=False)
8081

8182
iotrain.start(batchsize)
8283
iovalid.start(batchsize_valid)
@@ -93,20 +94,18 @@ def main():
9394
img = data["image"]
9495
lbl = data["label"]
9596
img_np = np.zeros( (img.shape[0], 1, 256, 256), dtype=np.float32 )
96-
lbl_np = np.zeros( (lbl.shape[0]), dtype=np.int )
9797
for j in range(img.shape[0]):
9898
imgtemp = img[j].reshape( (256,256) )
99-
print imgtemp.shape
99+
print(imgtemp.shape)
100100
img_np[j,0,:,:] = padandcrop(imgtemp)
101101
lbl_np[j] = np.argmax(lbl[j])
102-
103-
print "Train label"
104-
print lbl_np
102+
print("Train label")
103+
print(lbl_np)
105104

106105
datatest = iovalid[0]
107106
imgtest = data["image"]
108-
print "Test image shape"
109-
print imgtest.shape
107+
print("Test image shape")
108+
print(imgtest.shape)
110109

111110
iotrain.stop()
112111
iovalid.stop()
@@ -116,29 +115,29 @@ def main():
116115
for epoch in range(start_epoch, epochs):
117116

118117
adjust_learning_rate(optimizer, epoch, lr)
119-
print "Epoch [%d]: "%(epoch),
120-
for param_group in optimizer.param_groups:
121-
print "lr=%.3e"%(param_group['lr']),
122-
print
118+
#print("Epoch [%d]: "%(epoch),)
119+
#for param_group in optimizer.param_groups:
120+
# print("lr=%.3e"%(param_group['lr']),)
121+
#print()
123122

124123
# train for one epoch
125124
try:
126125
train_ave_loss, train_ave_acc = train(iotrain, model, criterion, optimizer, nbatches_per_epoch, epoch, 50)
127-
except Exception,e:
128-
print "Error in training routine!"
129-
print e.message
130-
print e.__class__.__name__
126+
except Exception as e:
127+
print("Error in training routine!")
128+
print(e.message)
129+
print(e.__class__.__name__)
131130
traceback.print_exc(e)
132131
break
133-
print "Epoch [%d] train aveloss=%.3f aveacc=%.3f"%(epoch,train_ave_loss,train_ave_acc)
132+
print("Epoch [%d] train aveloss=%.3f aveacc=%.3f"%(epoch,train_ave_loss,train_ave_acc))
134133

135134
# evaluate on validation set
136135
try:
137136
prec1 = validate(iovalid, model, criterion, nbatches_per_valid, 1)
138-
except Exception,e:
139-
print "Error in validation routine!"
140-
print e.message
141-
print e.__class__.__name__
137+
except Exception as e:
138+
print("Error in validation routine!")
139+
print(e.message)
140+
print(e.__class__.__name__)
142141
traceback.print_exc(e)
143142
break
144143

@@ -177,7 +176,9 @@ def train(train_loader, model, criterion, optimizer, nbatches, epoch, print_freq
177176
model.train()
178177

179178
for i in range(0,nbatches):
180-
#print "epoch ",epoch," batch ",i," of ",nbatches
179+
#print("epoch ",epoch," batch ",i," of ",nbatches)
180+
optimizer.zero_grad()
181+
181182
batchstart = time.time()
182183

183184
end = time.time()
@@ -195,28 +196,24 @@ def train(train_loader, model, criterion, optimizer, nbatches, epoch, print_freq
195196
imgtmp = img[j].reshape( (256,256) )
196197
img_np[j,0,:,:] = padandcropandflip(imgtmp) # data augmentation
197198
lbl_np[j] = np.argmax(lbl[j])
198-
input = torch.from_numpy(img_np).cuda()
199-
target = torch.from_numpy(lbl_np).cuda()
199+
#print(lbl[j]," ",lbl_np[j])
200+
input_var = torch.from_numpy(img_np).cuda()
201+
target_var = torch.from_numpy(lbl_np).cuda()
202+
#print("target: ",target_var,target_var.shape)
200203

201204
# measure data formatting time
202-
format_time.update(time.time() - end)
203-
204-
205-
input_var = torch.autograd.Variable(input)
206-
target_var = torch.autograd.Variable(target)
205+
format_time.update(time.time() - end)
207206

208207
# compute output
209208
end = time.time()
210209
output = model(input_var)
211210
loss = criterion(output, target_var)
212-
213211
# measure accuracy and record loss
214-
prec1 = accuracy(output.data, target, topk=(1,))
215-
losses.update(loss.data[0], input.size(0))
216-
top1.update(prec1[0], input.size(0))
212+
prec1 = accuracy(output.detach(), target_var, topk=(1,))
213+
losses.update(loss.detach().cpu().item(), input_var.size(0))
214+
top1.update(prec1[0], input_var.size(0))
217215

218216
# compute gradient and do SGD step
219-
optimizer.zero_grad()
220217
loss.backward()
221218
optimizer.step()
222219
train_time.update(time.time()-end)
@@ -233,7 +230,7 @@ def train(train_loader, model, criterion, optimizer, nbatches, epoch, print_freq
233230
train_time.val,train_time.avg,
234231
losses.val,losses.avg,
235232
top1.val,top1.avg)
236-
print "Epoch: [%d][%d/%d]\tTime %.3f (%.3f)\tData %.3f (%.3f)\tFormat %.3f (%.3f)\tTrain %.3f (%.3f)\tLoss %.3f (%.3f)\tPrec@1 %.3f (%.3f)"%status
233+
print("Epoch: [%d][%d/%d]\tTime %.3f (%.3f)\tData %.3f (%.3f)\tFormat %.3f (%.3f)\tTrain %.3f (%.3f)\tLoss %.3f (%.3f)\tPrec@1 %.3f (%.3f)"%status)
237234
#print('Epoch: [{0}][{1}/{2}]\t'
238235
# 'Time {batch_time.val:.3f} ({batch_time.avg:.3f})\t'
239236
# 'Data {data_time.val:.3f} ({data_time.avg:.3f})\t'
@@ -262,28 +259,26 @@ def validate(val_loader, model, criterion, nbatches, print_freq):
262259
for j in range(img.shape[0]):
263260
img_np[j,0,:,:] = img[j].reshape( (256,256) )
264261
lbl_np[j] = np.argmax(lbl[j])
265-
input = torch.from_numpy(img_np).cuda()
262+
inimg_var = torch.from_numpy(img_np).cuda()
266263
target = torch.from_numpy(lbl_np).cuda()
267264

268-
input_var = torch.autograd.Variable(input, volatile=True)
269-
target_var = torch.autograd.Variable(target, volatile=True)
270-
271265
# compute output
272-
output = model(input_var)
273-
loss = criterion(output, target_var)
266+
with torch.no_grad():
267+
output = model(inimg_var)
268+
loss = criterion(output, target)
274269

275-
# measure accuracy and record loss
276-
prec1 = accuracy(output.data, target, topk=(1,))
277-
losses.update(loss.data[0], input.size(0))
278-
top1.update(prec1[0], input.size(0))
270+
# measure accuracy and record loss
271+
prec1 = accuracy(output.detach(), target, topk=(1,))
272+
losses.update(loss.detach().cpu().item(), inimg_var.size(0))
273+
top1.update(prec1[0], inimg_var.size(0))
279274

280275
# measure elapsed time
281276
batch_time.update(time.time() - end)
282277
end = time.time()
283278

284279
if i % print_freq == 0:
285280
status = (i,nbatches,batch_time.val,batch_time.avg,losses.val,losses.avg,top1.val,top1.avg)
286-
print "Test: [%d/%d]\tTime %.3f (%.3f)\tLoss %.3f (%.3f)\tPrec@1 %.3f (%.3f)"%status
281+
#print("Test: [%d/%d]\tTime %.3f (%.3f)\tLoss %.3f (%.3f)\tPrec@1 %.3f (%.3f)"%status)
287282
#print('Test: [{0}/{1}]\t'
288283
# 'Time {batch_time.val:.3f} ({batch_time.avg:.3f})\t'
289284
# 'Loss {loss.val:.4f} ({loss.avg:.4f})\t'
@@ -293,7 +288,7 @@ def validate(val_loader, model, criterion, nbatches, print_freq):
293288

294289
#print(' * Prec@1 {top1.avg:.3f}'
295290
# .format(top1=top1))
296-
print "Test:Result* Prec@1 %.3f\tLoss %.3f"%(top1.avg,losses.avg)
291+
print("Test:Result* Prec@1 %.3f\tLoss %.3f"%(top1.avg,losses.avg))
297292

298293
return float(top1.avg)
299294

@@ -353,8 +348,8 @@ def dump_lr_schedule( startlr, numepochs ):
353348
for epoch in range(0,numepochs):
354349
lr = startlr*(0.5**(epoch//300))
355350
if epoch%10==0:
356-
print "Epoch [%d] lr=%.3e"%(epoch,lr)
357-
print "Epoch [%d] lr=%.3e"%(epoch,lr)
351+
print("Epoch [%d] lr=%.3e"%(epoch,lr))
352+
print("Epoch [%d] lr=%.3e"%(epoch,lr))
358353
return
359354

360355
if __name__ == '__main__':

setup.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
#!/bin/bash
22

33
home=$PWD
4-
source ~/setup_root6.sh
4+
source /usr/local/root/6.16.00_python3/bin/thisroot.sh
55

66
cd ../larcv2
77
source configure.sh
88

9-
cd ../torchlarcvdataset
9+
cd ../larcvdataset
1010
source setenv.sh
1111

1212
cd $home

train_dataloader.cfg

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ ThreadProcessor: {
22
Verbosity:3
33
NumThreads: 2
44
NumBatchStorage: 2
5-
RandomAccess: false
6-
#InputFiles: ["/home/taritree/working/dlphysics/testset/practice_train_5k.root"]
7-
InputFiles: ["/home/taritree/working/dlphysics/testset/train_50k.root"]
5+
RandomAccess: true
6+
InputFiles: ["/home/phy68/data/practice_train_5k.root"]
87
ProcessName: ["image","label"]
98
ProcessType: ["BatchFillerImage2D","BatchFillerPIDLabel"]
109
ProcessList: {

valid_dataloader.cfg

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ ThreadProcessorTest: {
33
NumThreads: 2
44
NumBatchStorage: 2
55
RandomAccess: true
6-
#InputFiles: ["/home/taritree/working/dlphysics/testset/practice_test_5k.root"]
7-
InputFiles: ["/home/taritree/working/dlphysics/testset/test_40k.root"]
6+
InputFiles: ["/home/phy68/data/practice_train_5k.root"]
87
ProcessName: ["imagetest","labeltest"]
98
ProcessType: ["BatchFillerImage2D","BatchFillerPIDLabel"]
109
ProcessList: {

0 commit comments

Comments
 (0)