weightfile1 = 'reid.weights' cfgfile2 = 'reid_nbn.cfg' weightfile2 = 'reid_nbn.weights' cfgfile3 = 'reid_nbn.prototxt' weightfile3 = 'reid_nbn.caffemodel' m1 = Darknet(cfgfile1) m1.load_weights(weightfile1) m1.eval() m2 = Darknet(cfgfile2) m2.load_weights(weightfile2) m2.eval() m3 = CaffeNet(cfgfile3) m3.load_weights(weightfile3) m3.eval() img = torch.rand(8, 3, 128, 64) img = Variable(img) output1 = m1(img).clone() output2 = m2(img).clone() output3 = m3(img).clone() print('----- output1 ------------------') print(output1.data.storage()[0:100]) print('----- output2 ------------------') print(output2.data.storage()[0:100]) print('----- output3 ------------------') print(output3.data.storage()[0:100])
net.cuda() optimizer = optim.SGD(net.parameters(), lr=base_lr, momentum=momentum, weight_decay=weight_decay) if args.weights: state = torch.load(args.weights) start_epoch = state['batch']+1 model.load_state_dict(state['state_dict']) optimizer.load_state_dict(state['optimizer']) print('loaded state %s' % (args.weights)) net.train() buf = Variable(torch.zeros(len(device_ids)).cuda()) for batch in range(max_iter): if (batch+1) % test_interval == 0: net.eval() average_accuracy = 0.0 average_loss = 0.0 for i in range(test_iter): loss, accuracy = net(buf) average_accuracy += accuracy.data.mean() average_loss += loss.data.mean() average_accuracy /= test_iter average_loss /= test_iter print('[%d] test loss: %f\ttest accuracy: %f' % (batch+1, average_loss, average_accuracy)) net.train() else: optimizer.zero_grad() loss = net(buf).mean() loss.backward() optimizer.step()
parser.add_argument('--gpu', help='gpu ids e.g "0,1,2,3"') parser.add_argument('--solver', help='the solver prototxt') parser.add_argument('--model', help='the network definition prototxt') parser.add_argument('--snapshot', help='the snapshot solver state to resume training') parser.add_argument('--weights', help='the pretrained weight') args = parser.parse_args() if args.mode == 'time': protofile = args.model net_info = parse_prototxt(protofile) model = CaffeNet(protofile) batch_size = 64 model.print_network() model.eval() niters = 50 total = 0 for i in range(niters): x = torch.rand(batch_size, 1, 28, 28) x = Variable(x) t0 = time.time() output = model(x) t1 = time.time() print('iteration %d: %fs' %(i, t1-t0)) total = total + (t1-t0) print('total time %fs, %fs per batch, %fs per sample' % (total, total/niters, total/(niters*batch_size))) elif args.mode == 'train': solver = parse_prototxt(args.solver)