• 关于tensor


    在复现pointnet++的时候遇到了一些问题

    关于tensor切片

    bl = torch.arange(data.size(0), dtype = torch.long)
    tensor[bl, :, :]
    tensor[:, :, :]

    以上两种切片没什么区别

    但作为非第一维就有区别了

    一一对应要用一维数组,不要用二维

    n_list = torch.randint(0, data.size(1), (data.size(0),), dtype = torch.float32)
    
    tensor[bl, n_list, :] #这样是bl的每个和n_list的每个一一对应
    tensor[:, n_list, :] #这样是第一维中的每一个都取n_list里的所有第二维

    以下为输出时:

    只是如果某一维只有一个值时(指定某一维的某一个行/列,或者像sum一样将某一维整体变为一个数),会默认减少一维

    如 (dis是一个三维张量)

    例1:

    print(dis[:, :, :])

    print(dis[:, 1, :])

     例2:

        print(dis[:, :, :])
        print(dis.size())
        print(torch.sum(dis, -1))
        print(torch.sum(dis, -1).size())

    对于将二维list作为切片列表

    bl = torch.arange(data.size(0), dtype = torch.long)
    print(data[bl, ret, :])

    若ret是个一维list,则bl和:一样

    若ret是个(data.size(0), data.size(1))的二维list,则需要用bl来一一对应

    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    Lookup 组件用法全解
    将字符串转换成表
    处于同一域中的两台SQL Server 实例无法连接
    在SSIS中的不同组件间使用局部临时表
    SSIS的CheckPoint用法
    控制流如何处理错误
    SSIS 对数据排序
    SSIS 数据输出列因为字符截断而失败
    SQL Server 的本地时间和UTC时间
    TSQL Merge 用法
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/15405785.html
Copyright © 2020-2023  润新知