zoukankan      html  css  js  c++  java
  • 关于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来一一对应

    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    JS: Promise
    JS: 数据结构与算法之栈
    JS: 数组乱序
    JS: 数组扁平化
    JS:函数柯里化
    JS: 防抖节流
    JS:事件委托
    理解Node.js(译文)
    Javascript闭包入门(译文)
    你真的懂ajax吗?
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/15405785.html
Copyright © 2011-2022 走看看