Python torch.device() Examples
The following are 30
code examples of torch.device().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
torch
, or try the search function
.
Example #1
Source File: 48_fine_tune_hotdog.py From deep-learning-note with MIT License | 9 votes |
def train_fine_tuning(net, optimizer, batch_size=128, num_epochs=4): train_iter = DataLoader(ImageFolder(os.path.join(data_dir, 'train'), transform=train_augs), batch_size, shuffle=True) test_iter = DataLoader(ImageFolder(os.path.join(data_dir, 'test'), transform=test_augs), batch_size) loss = torch.nn.CrossEntropyLoss() utils.train(train_iter, test_iter, net, loss, optimizer, device, num_epochs)
Example #2
Source File: mnist.py From Pytorch-Project-Template with MIT License | 6 votes |
def test(args, model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, size_average=False).item() # sum up batch loss pred = output.max(1, keepdim=True)[1] # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset)))
Example #3
Source File: train.py From neural-pipeline with MIT License | 6 votes |
def __init__(self, train_config: TrainConfig, fsm: FileStructManager, device: torch.device = None): self._fsm = fsm self.monitor_hub = MonitorHub() self._checkpoint_manager = CheckpointsManager(self._fsm) self.__epoch_num = 100 self._resume_from = None self._on_epoch_end = [] self._best_state_rule = None self._train_config = train_config self._data_processor = TrainDataProcessor(self._train_config, device).set_checkpoints_manager(self._checkpoint_manager) self._lr = LearningRate(self._data_processor.get_lr()) self._stop_rules = []
Example #4
Source File: 49_word2vec.py From deep-learning-note with MIT License | 6 votes |
def train(net, lr, num_epochs): device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') print("train on", device) net = net.to(device) optimizer = torch.optim.Adam(net.parameters(), lr=lr) for epoch in range(num_epochs): start, l_sum, n = time.time(), 0.0, 0 for batch in data_iter: center, context_negative, mask, label = [d.to(device) for d in batch] pred = skip_gram(center, context_negative, net[0], net[1]) # 使用掩码变量mask来避免填充项对损失函数计算的影响 l = (loss(pred.view(label.shape), label, mask) * mask.shape[1] / mask.float().sum(dim=1)).mean() # 一个batch的平均loss optimizer.zero_grad() l.backward() optimizer.step() l_sum += l.cpu().item() n += 1 print('epoch %d, loss %.2f, time %.2fs' % (epoch + 1, l_sum / n, time.time() - start))
Example #5
Source File: utils.py From deep-learning-note with MIT License | 6 votes |
def train_cnn(net, train_iter, test_iter, batch_size, optimizer, device, num_epochs): net = net.to(device) print('training on', device) loss = nn.CrossEntropyLoss() batch_count = 0 for epoch in range(num_epochs): train_l_sum, train_acc_sum, n, start = 0.0, 0.0, 0, time.time() for X, y in train_iter: X = X.to(device) y = y.to(device) y_hat = net(X) l = loss(y_hat, y) optimizer.zero_grad() l.backward() optimizer.step() train_l_sum += l.cpu().item() train_acc_sum += (y_hat.argmax(dim=1) == y).sum().cpu().item() n += y.shape[0] batch_count += 1 test_acc = evaluate_accuracy(test_iter, net) print('epoch %d, loss %.4f, train acc %.3f, test acc %.3f, time %.1f sec' % (epoch + 1, train_l_sum / n, train_acc_sum / n, test_acc, time.time() - start))
Example #6
Source File: torch_utils.py From pruning_yolov3 with GNU General Public License v3.0 | 6 votes |
def select_device(device='', apex=False): # device = 'cpu' or '0' or '0,1,2,3' cpu_request = device.lower() == 'cpu' if device and not cpu_request: # if device requested other than 'cpu' os.environ['CUDA_VISIBLE_DEVICES'] = device # set environment variable assert torch.cuda.is_available(), 'CUDA unavailable, invalid device %s requested' % device # check availablity cuda = False if cpu_request else torch.cuda.is_available() if cuda: c = 1024 ** 2 # bytes to MB ng = torch.cuda.device_count() x = [torch.cuda.get_device_properties(i) for i in range(ng)] cuda_str = 'Using CUDA ' + ('Apex ' if apex else '') # apex for mixed precision https://github.com/NVIDIA/apex for i in range(0, ng): if i == 1: cuda_str = ' ' * len(cuda_str) print("%sdevice%g _CudaDeviceProperties(name='%s', total_memory=%dMB)" % (cuda_str, i, x[i].name, x[i].total_memory / c)) else: print('Using CPU') print('') # skip a line return torch.device('cuda:0' if cuda else 'cpu')
Example #7
Source File: utils.py From deep-learning-note with MIT License | 6 votes |
def evaluate_accuracy(data_iter, net, device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')): acc_sum, n = 0.0, 0 with torch.no_grad(): for X, y in data_iter: if isinstance(net, torch.nn.Module): net.eval() # 评估模式,会关闭 dropout acc_sum += (net(X.to(device)).argmax(dim=1) == y.to(device)).float().sum().cpu().item() net.train() # 改回训练模式 else: # 如果是自定义的模型 if 'is_training' in net.__code__.co_varnames: acc_sum += (net(X, is_training=False).argmax(dim=1) == y).float().sum().item() else: acc_sum += (net(X).argmax(dim=1) == y).float().sum().item() n += y.shape[0] return acc_sum / n
Example #8
Source File: point_sample.py From mmdetection with Apache License 2.0 | 6 votes |
def generate_grid(num_grid, size, device): """Generate regular square grid of points in [0, 1] x [0, 1] coordinate space. Args: num_grid (int): The number of grids to sample, one for each region. size (tuple(int, int)): The side size of the regular grid. device (torch.device): Desired device of returned tensor. Returns: (torch.Tensor): A tensor of shape (num_grid, size[0]*size[1], 2) that contains coordinates for the regular grids. """ affine_trans = torch.tensor([[[1., 0., 0.], [0., 1., 0.]]], device=device) grid = F.affine_grid( affine_trans, torch.Size((1, 1, *size)), align_corners=False) grid = normalize(grid) return grid.view(1, -1, 2).expand(num_grid, -1, -1)
Example #9
Source File: anchor_free_head.py From mmdetection with Apache License 2.0 | 6 votes |
def get_points(self, featmap_sizes, dtype, device, flatten=False): """Get points according to feature map sizes. Args: featmap_sizes (list[tuple]): Multi-level feature map sizes. dtype (torch.dtype): Type of points. device (torch.device): Device of points. Returns: tuple: points of each image. """ mlvl_points = [] for i in range(len(featmap_sizes)): mlvl_points.append( self._get_points_single(featmap_sizes[i], self.strides[i], dtype, device, flatten)) return mlvl_points
Example #10
Source File: dqn.py From Pytorch-Project-Template with MIT License | 6 votes |
def select_action(self, state): """ The action selection function, it either uses the model to choose an action or samples one uniformly. :param state: current state of the model :return: """ if self.cuda: state = state.cuda() sample = random.random() eps_threshold = self.config.eps_start + (self.config.eps_start - self.config.eps_end) * math.exp( -1. * self.current_iteration / self.config.eps_decay) self.current_iteration += 1 if sample > eps_threshold: with torch.no_grad(): return self.policy_model(state).max(1)[1].view(1, 1) else: return torch.tensor([[random.randrange(2)]], device=self.device, dtype=torch.long)
Example #11
Source File: utils.py From deep-learning-note with MIT License | 6 votes |
def train(train_iter, test_iter, net, loss, optimizer, device, num_epochs): net = net.to(device) print("training on ", device) batch_count = 0 for epoch in range(num_epochs): train_l_sum, train_acc_sum, n, start = 0.0, 0.0, 0, time.time() for X, y in train_iter: X = X.to(device) y = y.to(device) y_hat = net(X) l = loss(y_hat, y) optimizer.zero_grad() l.backward() optimizer.step() train_l_sum += l.cpu().item() train_acc_sum += (y_hat.argmax(dim=1) == y).sum().cpu().item() n += y.shape[0] batch_count += 1 test_acc = evaluate_accuracy(test_iter, net) print('epoch %d, loss %.4f, train acc %.3f, test acc %.3f, time %.1f sec' % (epoch + 1, train_l_sum / batch_count, train_acc_sum / n, test_acc, time.time() - start))
Example #12
Source File: mnist.py From Pytorch-Project-Template with MIT License | 6 votes |
def validate(self): """ One cycle of model validation :return: """ self.model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in self.data_loader.test_loader: data, target = data.to(self.device), target.to(self.device) output = self.model(data) test_loss += F.nll_loss(output, target, size_average=False).item() # sum up batch loss pred = output.max(1, keepdim=True)[1] # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(self.data_loader.test_loader.dataset) self.logger.info('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(self.data_loader.test_loader.dataset), 100. * correct / len(self.data_loader.test_loader.dataset)))
Example #13
Source File: webcam_demo.py From mmdetection with Apache License 2.0 | 6 votes |
def main(): args = parse_args() device = torch.device(args.device) model = init_detector(args.config, args.checkpoint, device=device) camera = cv2.VideoCapture(args.camera_id) print('Press "Esc", "q" or "Q" to exit.') while True: ret_val, img = camera.read() result = inference_detector(model, img) ch = cv2.waitKey(1) if ch == 27 or ch == ord('q') or ch == ord('Q'): break model.show_result( img, result, score_thr=args.score_thr, wait_time=1, show=True)
Example #14
Source File: img_segmentation.py From neural-pipeline with MIT License | 6 votes |
def train(): model = resnet18(classes_num=1, in_channels=3, pretrained=True) train_config = TrainConfig(model, [train_stage, val_stage], torch.nn.BCEWithLogitsLoss(), torch.optim.Adam(model.parameters(), lr=1e-4)) file_struct_manager = FileStructManager(base_dir='data', is_continue=False) trainer = Trainer(train_config, file_struct_manager, torch.device('cuda:0')).set_epoch_num(2) tensorboard = TensorboardMonitor(file_struct_manager, is_continue=False, network_name='PortraitSegmentation') log = LogMonitor(file_struct_manager).write_final_metrics() trainer.monitor_hub.add_monitor(tensorboard).add_monitor(log) trainer.enable_best_states_saving(lambda: np.mean(train_stage.get_losses())) trainer.enable_lr_decaying(coeff=0.5, patience=10, target_val_clbk=lambda: np.mean(train_stage.get_losses())) trainer.add_on_epoch_end_callback(lambda: tensorboard.update_scalar('params/lr', trainer.data_processor().get_lr())) trainer.train()
Example #15
Source File: 30_series_sampling.py From deep-learning-note with MIT License | 6 votes |
def data_iter_random(corpus_indices, batch_size, num_steps, device=None): # 减1是因为输出的索引x是相应输入的索引y加1 num_examples = (len(corpus_indices) - 1) // num_steps epoch_size = num_examples // batch_size example_indices = list(range(num_examples)) random.shuffle(example_indices) # 返回从pos开始的长为num_steps的序列 def _data(pos): return corpus_indices[pos: pos + num_steps] if device is None: device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') for i in range(epoch_size): # 每次读取batch_size个随机样本 i = i * batch_size batch_indices = example_indices[i: i + batch_size] X = [_data(j * num_steps) for j in batch_indices] Y = [_data(j * num_steps + 1) for j in batch_indices] yield torch.tensor(X, dtype=torch.float32, device=device), torch.tensor(Y, dtype=torch.float32, device=device)
Example #16
Source File: 33_gru_raw.py From deep-learning-note with MIT License | 6 votes |
def get_params(): def _one(shape): ts = torch.tensor(np.random.normal(0, 0.01, size=shape), device=device, dtype=torch.float32) return torch.nn.Parameter(ts, requires_grad=True) def _three(): return (_one((num_inputs, num_hiddens)), _one((num_hiddens, num_hiddens)), torch.nn.Parameter(torch.zeros(num_hiddens, device=device, dtype=torch.float32), requires_grad=True)) W_xz, W_hz, b_z = _three() # 更新门参数 W_xr, W_hr, b_r = _three() # 重置门参数 W_xh, W_hh, b_h = _three() # 候选隐藏层参数 # 输出层参数 W_hq = _one((num_hiddens, num_outputs)) b_q = torch.nn.Parameter(torch.zeros(num_outputs, device=device, dtype=torch.float32), requires_grad=True) return nn.ParameterList([W_xz, W_hz, b_z, W_xr, W_hr, b_r, W_xh, W_hh, b_h, W_hq, b_q])
Example #17
Source File: mnist.py From Pytorch-Project-Template with MIT License | 5 votes |
def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item()))
Example #18
Source File: condensenet.py From Pytorch-Project-Template with MIT License | 5 votes |
def __init__(self, config): super().__init__(config) # Create an instance from the Model self.model = CondenseNet(self.config) # Create an instance from the data loader self.data_loader = Cifar10DataLoader(self.config) # Create instance from the loss self.loss = CrossEntropyLoss() # Create instance from the optimizer self.optimizer = torch.optim.SGD(self.model.parameters(), lr=self.config.learning_rate, momentum=float(self.config.momentum), weight_decay=self.config.weight_decay, nesterov=True) # initialize my counters self.current_epoch = 0 self.current_iteration = 0 self.best_valid_acc = 0 # Check is cuda is available or not self.is_cuda = torch.cuda.is_available() # Construct the flag and make sure that cuda is available self.cuda = self.is_cuda & self.config.cuda if self.cuda: self.device = torch.device("cuda") torch.cuda.manual_seed_all(self.config.seed) torch.cuda.set_device(self.config.gpu_device) self.logger.info("Operation will be on *****GPU-CUDA***** ") print_cuda_statistics() else: self.device = torch.device("cpu") torch.manual_seed(self.config.seed) self.logger.info("Operation will be on *****CPU***** ") self.model = self.model.to(self.device) self.loss = self.loss.to(self.device) # Model Loading from the latest checkpoint if not found start from scratch. self.load_checkpoint(self.config.checkpoint_file) # Tensorboard Writer self.summary_writer = SummaryWriter(log_dir=self.config.summary_dir, comment='CondenseNet')
Example #19
Source File: generate.py From GST-Tacotron with MIT License | 5 votes |
def synthesis(model, eval_text): eval_text = _pinyin(eval_text) model.eval() # ref_wavs = [ # 'ref_wav/nannan.wav', 'ref_wav/xiaofeng.wav', 'ref_wav/donaldduck.wav' # ] ref_wavs = [ 'ref_wav/nannan.wav', 'ref_wav/xiaofeng.wav', 'ref_wav/donaldduck.wav' ] speakers = ['nannan', 'xiaofeng', 'donaldduck'] wavs = {} for ref_wav, speaker in zip(ref_wavs, speakers): text, GO, ref_mels = get_eval_data(eval_text, ref_wav) text = text.to(device) GO = GO.to(device) ref_mels = ref_mels.to(device) mel_hat, mag_hat, attn = model(text, GO, ref_mels) mag_hat = mag_hat.squeeze().detach().cpu().numpy() attn = attn.squeeze().detach().cpu().numpy() wav_hat = spectrogram2wav(mag_hat) wavs[speaker] = wav_hat return wavs
Example #20
Source File: generate.py From GST-Tacotron with MIT License | 5 votes |
def load_model(checkpoint_path): model = Tacotron().to(device) model.load_state_dict( torch.load( checkpoint_path, map_location=lambda storage, location: storage)) return model
Example #21
Source File: 47_aug_cifar10.py From deep-learning-note with MIT License | 5 votes |
def train_with_data_aug(train_augs, test_augs, lr=0.001): batch_size, net = 256, utils.resnet18(10) optimizer = torch.optim.Adam(net.parameters(), lr=lr) loss = torch.nn.CrossEntropyLoss() train_iter = load_cifar10(True, train_augs, batch_size) test_iter = load_cifar10(False, test_augs, batch_size) utils.train(train_iter, test_iter, net, loss, optimizer, device, num_epochs=1)
Example #22
Source File: trainer.py From ACAN with MIT License | 5 votes |
def train_epoch(self, epoch): """Train one epoch, you can overload this function according to your need.""" device = torch.device('cuda:0' if self.use_gpu else 'cpu') self.net.to(device) self.criterion.to(device) self.net.train() # Iterate over data. prefetcher = DataPrefetcher(self.trainloader) image, label = prefetcher.next() step = 0 while image is not None: image, label = data[0].to(device), data[1].to(device) before_op_time = time.time() self.optimizer.zero_grad() output = self.net(image) total_loss = self.criterion(output, label) total_loss.backward() self.optimizer.step() fps = image.shape[0] / (time.time() - before_op_time) time_sofar = self.train_total_time / 3600 time_left = (self.n_steps / self.global_step - 1.0) * time_sofar if self.verbose > 0 and (step + 1) % (self.steps_per_epoch // self.verbose) == 0: print_str = 'Epoch [{:>3}/{:>3}] | Step [{:>3}/{:>3}] | fps {:4.2f} | Loss: {:7.3f} | Time elapsed {:.2f}h | Time left {:.2f}h'. \ format(epoch, self.max_epochs, step + 1, self.steps_per_epoch, fps, total_loss, time_sofar, time_left) self.print(print_str) self.global_step += 1 self.train_total_time += time.time() - before_op_time image, label = prefetcher.next() step += 1 return total_loss
Example #23
Source File: solver.py From End-to-end-ASR-Pytorch with MIT License | 5 votes |
def load_ckpt(self): ''' Load ckpt if --load option is specified ''' if self.paras.load: # Load weights ckpt = torch.load( self.paras.load, map_location=self.device if self.mode == 'train' else 'cpu') self.model.load_state_dict(ckpt['model']) if self.emb_decoder is not None: self.emb_decoder.load_state_dict(ckpt['emb_decoder']) # if self.amp: # amp.load_state_dict(ckpt['amp']) # Load task-dependent items metric = "None" score = 0.0 for k, v in ckpt.items(): if type(v) is float: metric, score = k, v if self.mode == 'train': self.step = ckpt['global_step'] self.optimizer.load_opt_state_dict(ckpt['optimizer']) self.verbose('Load ckpt from {}, restarting at step {} (recorded {} = {:.2f} %)'.format( self.paras.load, self.step, metric, score)) else: self.model.eval() if self.emb_decoder is not None: self.emb_decoder.eval() self.verbose('Evaluation target = {} (recorded {} = {:.2f} %)'.format(self.paras.load, metric, score))
Example #24
Source File: model.py From neural-pipeline with MIT License | 5 votes |
def load_weights(self, weights_file: str = None) -> None: """ Load weight from checkpoint """ if weights_file is not None: file = weights_file else: if self._checkpoints_manager is None: raise self.ModelException('No weights file or CheckpointsManagement specified') file = self._checkpoints_manager.weights_file() print("Model inited by file:", file, end='; ') pretrained_weights = torch.load(file) print("dict len before:", len(pretrained_weights), end='; ') processed = {} model_state_dict = self._base_model.state_dict() for k, v in pretrained_weights.items(): if k.split('.')[0] == 'module' and not isinstance(self._base_model, torch.nn.DataParallel): k = '.'.join(k.split('.')[1:]) elif isinstance(self._base_model, torch.nn.DataParallel) and k.split('.')[0] != 'module': k = 'module.' + k if k in model_state_dict: if v.device != model_state_dict[k].device: v.to(model_state_dict[k].device) processed[k] = v self._base_model.load_state_dict(processed) print("dict len after:", len(processed))
Example #25
Source File: resume_train.py From neural-pipeline with MIT License | 5 votes |
def continue_training(): ######################################################## # Create needed parameters again ######################################################## model = resnet18(classes_num=1, in_channels=3, pretrained=True) train_config = TrainConfig([train_stage, val_stage], torch.nn.BCEWithLogitsLoss(), torch.optim.Adam(model.parameters(), lr=1e-4)) ######################################################## # If FileStructManager creates again - just 'set is_continue' parameter to True ######################################################## file_struct_manager = FileStructManager(base_dir='data', is_continue=True) trainer = Trainer(model, train_config, file_struct_manager, torch.device('cuda:0')).set_epoch_num(10) tensorboard = TensorboardMonitor(file_struct_manager, is_continue=False, network_name='PortraitSegmentation') log = LogMonitor(file_struct_manager).write_final_metrics() trainer.monitor_hub.add_monitor(tensorboard).add_monitor(log) trainer.enable_best_states_saving(lambda: np.mean(train_stage.get_losses())) trainer.enable_lr_decaying(coeff=0.5, patience=10, target_val_clbk=lambda: np.mean(train_stage.get_losses())) trainer.add_on_epoch_end_callback(lambda: tensorboard.update_scalar('params/lr', trainer.data_processor().get_lr())) ######################################################## # For set resume mode to Trainer just call 'resume' method ######################################################## trainer.resume(from_best_checkpoint=False).train()
Example #26
Source File: gridsearch_train.py From neural-pipeline with MIT License | 5 votes |
def __init__(self, train_configs: [ComparableTrainConfig], workdir: str, device: torch.device = None, is_continue: bool = False): self._train_configs = train_configs self._device = device self._workdir = workdir self._state = {} self._fsm = MultipleFSM(self._workdir, is_continue=is_continue) self._init_monitor_clbks = [] self._epoch_num = 100 if is_continue: self._load_state()
Example #27
Source File: 35_lstm_raw.py From deep-learning-note with MIT License | 5 votes |
def init_lstm_state(batch_size, num_hiddens, device): return (torch.zeros((batch_size, num_hiddens), device=device), torch.zeros((batch_size, num_hiddens), device=device))
Example #28
Source File: 31_char_rnn_raw.py From deep-learning-note with MIT License | 5 votes |
def grad_clipping(params, theta, device): norm = torch.tensor([0.0], device=device) for param in params: norm += (param.grad.data ** 2).sum() norm = norm.sqrt().item() if norm > theta: for param in params: param.grad.data *= (theta / norm)
Example #29
Source File: 31_char_rnn_raw.py From deep-learning-note with MIT License | 5 votes |
def predict_rnn(prefix, num_chars, rnn, params, init_rnn_state, num_hiddens, vocab_size, device, idx_to_char, char_to_idx): state = init_rnn_state(1, num_hiddens, device) output = [char_to_idx[prefix[0]]] for t in range(num_chars + len(prefix) - 1): # 将上一时间步的输出作为当前时间步的输入 X = to_onehot(torch.tensor([[output[-1]]], device=device), vocab_size) # 计算输出和更新隐藏状态 (Y, state) = rnn(X, state, params) # 下一个时间步的输入是 prefix 里的字符或者当前最佳预测字符 if t < len(prefix) - 1: output.append(char_to_idx[prefix[t+1]]) else: output.append(int(Y[0].argmax(dim=1).item())) return ''.join([idx_to_char[i] for i in output])
Example #30
Source File: train.py From MomentumContrast.pytorch with MIT License | 5 votes |
def initialize_queue(model_k, device, train_loader): queue = torch.zeros((0, 128), dtype=torch.float) queue = queue.to(device) for batch_idx, (data, target) in enumerate(train_loader): x_k = data[1] x_k = x_k.to(device) k = model_k(x_k) k = k.detach() queue = queue_data(queue, k) queue = dequeue_data(queue, K = 10) break return queue