本文整理汇总了Python中torch.long方法的典型用法代码示例。如果您正苦于以下问题:Python torch.long方法的具体用法?Python torch.long怎么用?Python torch.long使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类torch
的用法示例。
在下文中一共展示了torch.long方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: train
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
def train(self, dataset):
self.model.train()
self.optimizer.zero_grad()
total_loss = 0.0
indices = torch.randperm(len(dataset), dtype=torch.long, device='cpu')
for idx in tqdm(range(len(dataset)), desc='Training epoch ' + str(self.epoch + 1) + ''):
ltree, linput, rtree, rinput, label = dataset[indices[idx]]
target = utils.map_label_to_target(label, dataset.num_classes)
linput, rinput = linput.to(self.device), rinput.to(self.device)
target = target.to(self.device)
output = self.model(ltree, linput, rtree, rinput)
loss = self.criterion(output, target)
total_loss += loss.item()
loss.backward()
if idx % self.args.batchsize == 0 and idx > 0:
self.optimizer.step()
self.optimizer.zero_grad()
self.epoch += 1
return total_loss / len(dataset)
# helper function for testing
示例2: random_choice
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
def random_choice(self, gallery, num):
"""Random select some elements from the gallery.
If `gallery` is a Tensor, the returned indices will be a Tensor;
If `gallery` is a ndarray or list, the returned indices will be a
ndarray.
Args:
gallery (Tensor | ndarray | list): indices pool.
num (int): expected sample num.
Returns:
Tensor or ndarray: sampled indices.
"""
assert len(gallery) >= num
is_tensor = isinstance(gallery, torch.Tensor)
if not is_tensor:
gallery = torch.tensor(
gallery, dtype=torch.long, device=torch.cuda.current_device())
perm = torch.randperm(gallery.numel(), device=gallery.device)[:num]
rand_inds = gallery[perm]
if not is_tensor:
rand_inds = rand_inds.cpu().numpy()
return rand_inds
示例3: random_choice
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
def random_choice(gallery, num):
"""Randomly select some elements from the gallery.
If `gallery` is a Tensor, the returned indices will be a Tensor;
If `gallery` is a ndarray or list, the returned indices will be a
ndarray.
Args:
gallery (Tensor | ndarray | list): indices pool.
num (int): expected sample num.
Returns:
Tensor or ndarray: sampled indices.
"""
assert len(gallery) >= num
is_tensor = isinstance(gallery, torch.Tensor)
if not is_tensor:
gallery = torch.tensor(
gallery, dtype=torch.long, device=torch.cuda.current_device())
perm = torch.randperm(gallery.numel(), device=gallery.device)[:num]
rand_inds = gallery[perm]
if not is_tensor:
rand_inds = rand_inds.cpu().numpy()
return rand_inds
示例4: select_action
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
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)
示例5: __init__
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
def __init__(self, thresh=1e-8, projDim=8192, input_dim=512):
super(CBP, self).__init__()
self.thresh = thresh
self.projDim = projDim
self.input_dim = input_dim
self.output_dim = projDim
torch.manual_seed(1)
self.h_ = [
torch.randint(0, self.output_dim, (self.input_dim,),dtype=torch.long),
torch.randint(0, self.output_dim, (self.input_dim,),dtype=torch.long)
]
self.weights_ = [
(2 * torch.randint(0, 2, (self.input_dim,)) - 1).float(),
(2 * torch.randint(0, 2, (self.input_dim,)) - 1).float()
]
indices1 = torch.cat((torch.arange(input_dim, dtype=torch.long).reshape(1, -1),
self.h_[0].reshape(1, -1)), dim=0)
indices2 = torch.cat((torch.arange(input_dim, dtype=torch.long).reshape(1, -1),
self.h_[1].reshape(1, -1)), dim=0)
self.sparseM = [
torch.sparse.FloatTensor(indices1, self.weights_[0], torch.Size([self.input_dim, self.output_dim])).to_dense(),
torch.sparse.FloatTensor(indices2, self.weights_[1], torch.Size([self.input_dim, self.output_dim])).to_dense(),
]
示例6: __getitem__
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
def __getitem__(self, index: int) -> Tuple[str, Tensor, Tensor, Tensor, Tensor]:
image_id = self._image_ids[index]
annotation = self._image_id_to_annotation_dict[image_id]
bboxes = [obj.bbox.tolist() for obj in annotation.objects]
labels = [COCO2017Animal.CATEGORY_TO_LABEL_DICT[COCO2017.LABEL_TO_CATEGORY_DICT[obj.label]] for obj in annotation.objects] # mapping from original `COCO2017` dataset
bboxes = torch.tensor(bboxes, dtype=torch.float)
labels = torch.tensor(labels, dtype=torch.long)
image = Image.open(annotation.filename).convert('RGB') # for some grayscale images
# random flip on only training mode
if self._mode == COCO2017Animal.Mode.TRAIN and random.random() > 0.5:
image = ImageOps.mirror(image)
bboxes[:, [0, 2]] = image.width - bboxes[:, [2, 0]] # index 0 and 2 represent `left` and `right` respectively
image, scale = COCO2017Animal.preprocess(image, self._image_min_side, self._image_max_side)
scale = torch.tensor(scale, dtype=torch.float)
bboxes *= scale
return image_id, image, scale, bboxes, labels
示例7: __getitem__
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
def __getitem__(self, index: int) -> Tuple[str, Tensor, Tensor, Tensor, Tensor]:
image_id = self._image_ids[index]
annotation = self._image_id_to_annotation_dict[image_id]
bboxes = [obj.bbox.tolist() for obj in annotation.objects]
labels = [COCO2017Person.CATEGORY_TO_LABEL_DICT[COCO2017.LABEL_TO_CATEGORY_DICT[obj.label]] for obj in annotation.objects] # mapping from original `COCO2017` dataset
bboxes = torch.tensor(bboxes, dtype=torch.float)
labels = torch.tensor(labels, dtype=torch.long)
image = Image.open(annotation.filename).convert('RGB') # for some grayscale images
# random flip on only training mode
if self._mode == COCO2017Person.Mode.TRAIN and random.random() > 0.5:
image = ImageOps.mirror(image)
bboxes[:, [0, 2]] = image.width - bboxes[:, [2, 0]] # index 0 and 2 represent `left` and `right` respectively
image, scale = COCO2017Person.preprocess(image, self._image_min_side, self._image_max_side)
scale = torch.tensor(scale, dtype=torch.float)
bboxes *= scale
return image_id, image, scale, bboxes, labels
示例8: __getitem__
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
def __getitem__(self, index: int) -> Tuple[str, Tensor, Tensor, Tensor, Tensor]:
image_id = self._image_ids[index]
annotation = self._image_id_to_annotation_dict[image_id]
bboxes = [obj.bbox.tolist() for obj in annotation.objects]
labels = [obj.label for obj in annotation.objects]
bboxes = torch.tensor(bboxes, dtype=torch.float)
labels = torch.tensor(labels, dtype=torch.long)
image = Image.open(annotation.filename).convert('RGB') # for some grayscale images
# random flip on only training mode
if self._mode == COCO2017.Mode.TRAIN and random.random() > 0.5:
image = ImageOps.mirror(image)
bboxes[:, [0, 2]] = image.width - bboxes[:, [2, 0]] # index 0 and 2 represent `left` and `right` respectively
image, scale = COCO2017.preprocess(image, self._image_min_side, self._image_max_side)
scale = torch.tensor(scale, dtype=torch.float)
bboxes *= scale
return image_id, image, scale, bboxes, labels
示例9: __getitem__
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
def __getitem__(self, index: int) -> Tuple[str, Tensor, Tensor, Tensor, Tensor]:
image_id = self._image_ids[index]
annotation = self._image_id_to_annotation_dict[image_id]
bboxes = [obj.bbox.tolist() for obj in annotation.objects]
labels = [COCO2017Car.CATEGORY_TO_LABEL_DICT[COCO2017.LABEL_TO_CATEGORY_DICT[obj.label]] for obj in annotation.objects] # mapping from original `COCO2017` dataset
bboxes = torch.tensor(bboxes, dtype=torch.float)
labels = torch.tensor(labels, dtype=torch.long)
image = Image.open(annotation.filename).convert('RGB') # for some grayscale images
# random flip on only training mode
if self._mode == COCO2017Car.Mode.TRAIN and random.random() > 0.5:
image = ImageOps.mirror(image)
bboxes[:, [0, 2]] = image.width - bboxes[:, [2, 0]] # index 0 and 2 represent `left` and `right` respectively
image, scale = COCO2017Car.preprocess(image, self._image_min_side, self._image_max_side)
scale = torch.tensor(scale, dtype=torch.float)
bboxes *= scale
return image_id, image, scale, bboxes, labels
示例10: get_ts_loss
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
def get_ts_loss(self, temporal_scores, ts_labels, answer_indices):
"""
Args:
temporal_scores: (N, 5, Li, 2)
ts_labels: dict(st=(N, ), ed=(N, ))
answer_indices: (N, )
Returns:
"""
bsz = len(answer_indices)
# compute loss
ca_temporal_scores_st_ed = \
temporal_scores[torch.arange(bsz, dtype=torch.long), answer_indices] # (N, Li, 2)
loss_st = self.temporal_criterion(ca_temporal_scores_st_ed[:, :, 0], ts_labels["st"])
loss_ed = self.temporal_criterion(ca_temporal_scores_st_ed[:, :, 1], ts_labels["ed"])
return (loss_st + loss_ed) / 2.
示例11: get_train_data
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
def get_train_data(self, batch_size=8):
samples = random.sample(self.train_dict.keys(), batch_size)
texts = [self.train_dict[k][0] for k in samples]
labels = [self.train_dict[k][1] for k in samples]
robust_padding(texts, labels)
maxlen = max(len(t) for t in texts)
text_tensor = torch.zeros(maxlen, batch_size, dtype=torch.long)
for i, text in enumerate(texts):
text_tensor[:, i] = torch.LongTensor([VOCAB.find(c) for c in text])
truth_tensor = torch.zeros(maxlen, batch_size, dtype=torch.long)
for i, label in enumerate(labels):
truth_tensor[:, i] = torch.LongTensor(label)
return text_tensor.to(self.device), truth_tensor.to(self.device)
示例12: get_val_data
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
def get_val_data(self, batch_size=8, device="cpu"):
keys = random.sample(self.val_dict.keys(), batch_size)
texts = [self.val_dict[k][0] for k in keys]
labels = [self.val_dict[k][1] for k in keys]
maxlen = max(len(s) for s in texts)
texts = [s.ljust(maxlen, " ") for s in texts]
labels = [
numpy.pad(a, (0, maxlen - len(a)), mode="constant", constant_values=0)
for a in labels
]
text_tensor = torch.zeros(maxlen, batch_size, dtype=torch.long)
for i, text in enumerate(texts):
text_tensor[:, i] = torch.LongTensor([VOCAB.find(c) for c in text])
truth_tensor = torch.zeros(maxlen, batch_size, dtype=torch.long)
for i, label in enumerate(labels):
truth_tensor[:, i] = torch.LongTensor(label)
return keys, text_tensor.to(self.device), truth_tensor.to(self.device)
示例13: forward
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
def forward(self, batch_token_ids):
batch_size, sent_len = batch_token_ids.size()
device = batch_token_ids.device
batch_pos_ids = torch.arange(
sent_len, dtype=torch.long, device=device, requires_grad=False
)
batch_pos_ids = batch_pos_ids.unsqueeze(0).expand_as(batch_token_ids)
batch_token_emb = self.token_embedding(batch_token_ids)
batch_pos_emb = self.pos_embedding(batch_pos_ids)
batch_token_emb = batch_token_emb + batch_pos_emb
batch_token_out = self.layer_norm(batch_token_emb)
batch_token_out = self.dropout(batch_token_out)
return batch_token_out
示例14: forward
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
def forward(self, batch_elem_emb, sent_pos_ids=None):
if sent_pos_ids is None:
num_elem = batch_elem_emb.size(-2)
sent_pos_ids = torch.arange(
num_elem, dtype=torch.long, device=batch_elem_emb.device, requires_grad=False
)
elif not isinstance(sent_pos_ids, torch.Tensor):
sent_pos_ids = torch.tensor(
sent_pos_ids, dtype=torch.long, device=batch_elem_emb.device, requires_grad=False
)
batch_pos_emb = self.embedding(sent_pos_ids)
out = batch_elem_emb + batch_pos_emb
out = self.dropout(self.layer_norm(out))
return out
示例15: get_label_embedding
# 需要导入模块: import torch [as 别名]
# 或者: from torch import long [as 别名]
def get_label_embedding(labels, max_seq_length, tokenizer, device):
features = []
for label in labels:
label_tokens = ["[CLS]"] + tokenizer.tokenize(label) + ["[SEP]"]
label_token_ids = tokenizer.convert_tokens_to_ids(label_tokens)
label_len = len(label_token_ids)
label_padding = [0] * (max_seq_length - len(label_token_ids))
label_token_ids += label_padding
assert len(label_token_ids) == max_seq_length
features.append((label_token_ids, label_len))
all_label_token_ids = torch.tensor([f[0] for f in features], dtype=torch.long).to(device)
all_label_len = torch.tensor([f[1] for f in features], dtype=torch.long).to(device)
return all_label_token_ids, all_label_len