PyTorch中一些常用的函数

1. torch.as_tensor(data, dtype=None,device=None)->Tensor : 为data生成tensor。

这里data的数据类型可以是list、tuple、ndarray、scalar等

若data已经是tensor,且dtype和device与参数相同,则生成的tensor会和data共享内存。如果data是ndarray, 且dtype对应,devices为cpu,则同样共享内存。其他情况不共享内存。

import torch
import numpy as np

arr = np.array([1,2,3,4,5,6])
tensor = torch.as_tensor(arr)

这里是pytorch的torchvision中集成的一个检测代码的一个实际例子

class AnchorGenerator(nn.Module):  
    ... 
    def generate_anchors(self, scales, aspect_ratios, dtype=torch.float32, device="cpu"):
        # type: (List[int], List[float], int, Device)  # noqa: F821
        scales = torch.as_tensor(scales, dtype=dtype, device=device)
        aspect_ratios = torch.as_tensor(aspect_ratios, dtype=dtype, device=device)
        h_ratios = torch.sqrt(aspect_ratios)
        w_ratios = 1 / h_ratios

        ws = (w_ratios[:, None] * scales[None, :]).view(-1)
        hs = (h_ratios[:, None] * scales[None, :]).view(-1)

        base_anchors = torch.stack([-ws, -hs, ws, hs], dim=1) / 2
        return base_anchors.round()

2. torch.meshgrid()函数的用法

torch.meshgrid()函数是用来生成网格的,因此也可以用于坐标生成。

函数的输入必须是数据类型相同的一维张量, 输出也是两个张量。其中输出张量的行数为第一个输入张量中元素的个数, 列数为第二个输入张量中元素的个数。

第一个输出张量填充了第一个输入张量中的元素, 每一行的元素相同;第二个输出张量填充了第二个输入张量中的元素, 每一列的元素相同

import torch
a = torch.tensor([1, 2, 3, 4])
b = torch.tensor([5, 6, 7])
x, y = torch.meshgrid(a, b)
print(x)
print(y)

#######
tensor([[1, 1, 1],
        [2, 2, 2],
        [3, 3, 3]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值