Python torch.Device() Examples
The following are 7
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: utils.py From pytorch.sngan_projection with MIT License | 7 votes |
def sample_pseudo_labels(num_classes, batch_size, device): """Sample pseudo-labels. Args: num_classes (int): number of classes in the dataset. batch_size (int): size of mini-batch. device (torch.Device): For compatibility. Returns: ~torch.LongTensor or torch.cuda.LongTensor. """ pseudo_labels = torch.from_numpy( numpy.random.randint(low=0, high=num_classes, size=(batch_size)) ) pseudo_labels = pseudo_labels.type(torch.long).to(device) return pseudo_labels
Example #2
Source File: _functions.py From garage with MIT License | 6 votes |
def global_device(): """Returns the global device that torch.Tensors should be placed on. Note: The global device is set by using the function `garage.torch._functions.set_gpu_mode.` If this functions is never called `garage.torch._functions.device()` returns None. Returns: `torch.Device`: The global device that newly created torch.Tensors should be placed on. """ # pylint: disable=global-statement global _DEVICE return _DEVICE
Example #3
Source File: models.py From kraken with Apache License 2.0 | 6 votes |
def __init__(self, nn, decoder=kraken.lib.ctc_decoder.greedy_decoder, train: bool = False, device: str = 'cpu') -> None: """ Constructs a sequence recognizer from a VGSL model and a decoder. Args: nn (kraken.lib.vgsl.TorchVGSLModel): neural network used for recognition decoder (func): Decoder function used for mapping softmax activations to labels and positions train (bool): Enables or disables gradient calculation device (torch.Device): Device to run model on """ self.nn = nn self.kind = '' if train: self.nn.train() else: self.nn.eval() self.codec = self.nn.codec self.decoder = decoder self.train = train self.device = device if nn.model_type not in [None, 'recognition']: raise ValueError('Models of type {} are not supported by TorchSeqRecognizer'.format(nn.model_type)) self.one_channel_mode = nn.one_channel_mode self.seg_type = nn.seg_type self.nn.to(device)
Example #4
Source File: deep_mixin.py From nussl with MIT License | 5 votes |
def load_model(self, model_path, device='cpu'): """ Loads the model at specified path `model_path`. Uses GPU if available. Args: model_path (str): path to model saved as SeparatonModel. device (str or torch.Device): loads model on CPU or GPU. Defaults to 'cuda'. Returns: model (SeparationModel): Loaded model, nn.Module metadata (dict): metadata associated with model, used for making the input data into the model. """ model_dict = torch.load(model_path, map_location='cpu') model = SeparationModel(model_dict['config']) model.load_state_dict(model_dict['state_dict']) device = device if torch.cuda.is_available() else 'cpu' self.device = device model = model.to(device).eval() metadata = model_dict['metadata'] if 'metadata' in model_dict else {} self.model = model self.config = model_dict['config'] self.metadata = metadata self.transform = self._get_transforms( self.metadata['transforms'])
Example #5
Source File: fid.py From pytorch.sngan_projection with MIT License | 4 votes |
def get_activations(images, model, batch_size=64, dims=2048, device=None): """Calculates the activations of the pool_3 layer for all images. Params: -- images : Numpy array of dimension (n_images, 3, hi, wi). The values must lie between 0 and 1. -- model : Instance of inception model -- batch_size : the images numpy array is split into batches with batch size batch_size. A reasonable batch size depends on the hardware. -- dims : Dimensionality of features returned by Inception -- device : torch.Device Returns: -- A numpy array of dimension (num images, dims) that contains the activations of the given tensor when feeding inception with the query tensor. """ model.eval() d0 = images.shape[0] if batch_size > d0: print(('Warning: batch size is bigger than the data size. ' 'Setting batch size to data size')) batch_size = d0 n_batches = d0 // batch_size n_used_imgs = n_batches * batch_size pred_arr = np.empty((n_used_imgs, dims)) for i in range(n_batches): start = i * batch_size end = start + batch_size batch = torch.from_numpy(images[start:end]).type(torch.FloatTensor) if device is not None: batch = batch.to(device) with torch.no_grad(): pred = model(batch)[0] # If model output is not scalar, apply global spatial average pooling. # This happens if you choose a dimensionality not equal 2048. if pred.shape[2] != 1 or pred.shape[3] != 1: pred = F.adaptive_avg_pool2d(pred, output_size=(1, 1)) pred_arr[start:end] = pred.cpu().numpy().reshape(batch_size, -1) return pred_arr
Example #6
Source File: modeling_utils.py From NLP_Toolkit with Apache License 2.0 | 4 votes |
def get_extended_attention_mask(self, attention_mask: Tensor, input_shape: Tuple, device: device) -> Tensor: """Makes broadcastable attention mask and causal mask so that future and maked tokens are ignored. Arguments: attention_mask: torch.Tensor with 1 indicating tokens to ATTEND to input_shape: tuple, shape of input_ids device: torch.Device, usually self.device Returns: torch.Tensor with dtype of attention_mask.dtype """ # We can provide a self-attention mask of dimensions [batch_size, from_seq_length, to_seq_length] # ourselves in which case we just need to make it broadcastable to all heads. if attention_mask.dim() == 3: extended_attention_mask = attention_mask[:, None, :, :] elif attention_mask.dim() == 2: # Provided a padding mask of dimensions [batch_size, seq_length] # - if the model is a decoder, apply a causal mask in addition to the padding mask # - if the model is an encoder, make the mask broadcastable to [batch_size, num_heads, seq_length, seq_length] if self.config.is_decoder: batch_size, seq_length = input_shape seq_ids = torch.arange(seq_length, device=device) causal_mask = seq_ids[None, None, :].repeat(batch_size, seq_length, 1) <= seq_ids[None, :, None] # causal and attention masks must have same type with pytorch version < 1.3 causal_mask = causal_mask.to(attention_mask.dtype) extended_attention_mask = causal_mask[:, None, :, :] * attention_mask[:, None, None, :] else: extended_attention_mask = attention_mask[:, None, None, :] else: raise ValueError( "Wrong shape for input_ids (shape {}) or attention_mask (shape {})".format( input_shape, attention_mask.shape ) ) # Since attention_mask is 1.0 for positions we want to attend and 0.0 for # masked positions, this operation will create a tensor which is 0.0 for # positions we want to attend and -10000.0 for masked positions. # Since we are adding it to the raw scores before the softmax, this is # effectively the same as removing these entirely. extended_attention_mask = extended_attention_mask.to(dtype=self.dtype) # fp16 compatibility extended_attention_mask = (1.0 - extended_attention_mask) * -10000.0 return extended_attention_mask
Example #7
Source File: qr.py From heat with MIT License | 4 votes |
def __split0_send_q_to_diag_pr( col, pr0, pr1, diag_process, comm, q_dict, key, q_dict_waits, q_dtype, q_device ): """ This function sends the merged Q to the diagonal process. Buffered send it used for sending Q. This is needed for the Q calculation when two processes are merged and neither is the diagonal process. Parameters ---------- col : int The current column used in the parent QR loop pr0, pr1 : int, int Rank of processes 0 and 1. These are the processes used in the calculation of q diag_process : int The rank of the process which has the tile along the diagonal for the given column comm : MPICommunication (ht.DNDarray.comm) The communicator used. (Intended as the communication of the DNDarray 'a' given to qr) q_dict : Dict dictionary containing the Q values calculated for finding R key : string key for q_dict[col] which corresponds to the Q to send q_dict_waits : Dict Dictionary used in the collection of the Qs which are sent to the diagonal process q_dtype : torch.type Type of the Q tensor q_device : torch.Device Device of the Q tensor Returns ------- None, sets the values of q_dict_waits with the with *waits* for the values of Q, upper.shape, and lower.shape """ if comm.rank not in [pr0, pr1, diag_process]: return # this is to send the merged q to the diagonal process for the forming of q base_tag = "1" + str(pr1.item() if isinstance(pr1, torch.Tensor) else pr1) if comm.rank == pr1: q = q_dict[col][key][0] u_shape = q_dict[col][key][1] l_shape = q_dict[col][key][2] comm.send(tuple(q.shape), dest=diag_process, tag=int(base_tag + "1")) comm.Isend(q, dest=diag_process, tag=int(base_tag + "12")) comm.send(u_shape, dest=diag_process, tag=int(base_tag + "123")) comm.send(l_shape, dest=diag_process, tag=int(base_tag + "1234")) if comm.rank == diag_process: # q_dict_waits now looks like a q_sh = comm.recv(source=pr1, tag=int(base_tag + "1")) q_recv = torch.zeros(q_sh, dtype=q_dtype, device=q_device) k = "p0" + str(pr0) + "p1" + str(pr1) q_dict_waits[col][k] = [] q_wait = comm.Irecv(q_recv, source=pr1, tag=int(base_tag + "12")) q_dict_waits[col][k].append([q_recv, q_wait]) q_dict_waits[col][k].append(comm.irecv(source=pr1, tag=int(base_tag + "123"))) q_dict_waits[col][k].append(comm.irecv(source=pr1, tag=int(base_tag + "1234"))) q_dict_waits[col][k].append(key[0])