zoukankan      html  css  js  c++  java
  • pytorch入门与实践-3 Tensor详解

    1--如第二章所讲,Tensor的本质是矩阵或数据

    2--对Tensor的操作分类

    |----API分类

    |------torch中定义的: t.f(a,b)

    |------tensor的成员函数: a.f(b)

    |----按对tensro的作用分

    |------不会改变本身 : 返回第三变了

    |------会改变本身 : 修改自身的, 同名方法+ 下划线 都表示这个方法是修改自身的

    3--Tensor的创建

    |----t.Tensor(a,b): 创建一个a×b的tensor,值为随机,t.Tensor((a,b)):以list(a,b)创建一个tensor,两者不一样

    |----t.ones(),t.zeros():创建全1,全0对象

    |----t.eye(),创建单位矩阵(对角线为1的矩阵)|为什么只有一个方向的对角线?因为子矩阵中上下顺序可以变换

    |----t.arange(a,b,s) 创建1维数据,从a到b,s为步进值

    |----t.linspace(a,b,s) 创建1维数据,从a到b分成s分,但是s不能是1,至少是2

    |----t.rand(),t.randn(), 前者随即分布,后者正态随即分布

    |----t.normal(m,s),t.uniform(f,to),正太分布,均匀分布 ? 不知道有什么区别 ??

    |----t.randperm(m)随机排列, 即 1-m随机排列产生一个一维数组

    4--Tensor属性访问

    |----查看Tensor的大小(维度 ) a.size(),a.shape(),两者等价

    |----查看总元素个数 a.numel() == a.nelement()

    5--Tensor数据层面上的修改

    |----a.view(a,b),会修改其维度,但是数据总量不会改变 且返回新的对象b,但a与b共享内存,只是对内存的解析不同

    |------当view的参数含有-1时,该参数会根据另一个参数计算当前的参数

    |----a.squeeze(dim) 缩减某个维度,但是只有能缩减的时候才会生效,实验的时候发现只有经过unsqueeze出的维度才能缩减

    |----a.resize_(), 当缩小时,不见的内存依旧保存,当变大时,会自动扩增内存

    6--Tensor的索引

    |----下标运算[ ],很骚气,脚本语言的好处了吧

    |----方法类: 注意 要分清 dim 和 index的区别

    |------t.index_select()

    |------t.masked_select(),就是掩图,但是是ByteTensor

    |------t.non_zero()

    |------gather() 在某维度的方向上 进行选取,略复杂

    |------scatter_() 与 gather操作相反

  • 相关阅读:
    mysql 游标查询
    mysql忘记root密码的解决
    java 两种缓存
    java 实现缓存
    android ndk
    本地计算机上的 MSSQLSERVER 服务启动后又停止了。一些服务自动停止,如果它们没有什么可做的,例如“性能日志和警报”服务 [解决办法]
    选择WEB开发语言
    linux 查看硬件信息
    java 缓存 谈
    程序员相关
  • 原文地址:https://www.cnblogs.com/CXianRen/p/10451949.html
Copyright © 2011-2022 走看看