Torch
torch包含了多维的数据结构以及基于其上的数学运算。它提供了多种实用工具,具有CUDA对应的实现
张量 Tensors
|
|
|
|
判断是否为张量,如果是pytorch张量,则返回True
|
|
|
|
判断是否为pytorch Storage,如何是,则返回True
|
|
|
|
返回input 张量中的元素个数 参数: input (Tensor) – 输入张量
创建操作 Creation Ops
|
|
参数:
n(int) – 行数m(int, 可选) – 列数.如果为None,则默认为nout(Tensor,可选) - 输出张量
|
|
返回一个2维张量,对角线数字为1,其它位置为0
|
|
|
|
将numpy.ndarray转换为Tensor。返回的张量tensor和numpy的ndarray共享一个内存空间。修改一个会导致另外一个也被修改。返回的张量不能调整大小。
|
|
参数:
start(float) – 点集的开始值end(float) – 点集的最终值steps(int) - 在start和end之间的采样数out (Tensor, 可选的)– 结果张量
|
|
返回start和end之间长度为steps的一维张量
|
|
|
|
返回一个全为1的张量,形状由可变参数sizes定义。
|
|
|
|
输入参数n,返回一个从0 到n -1的随机整数排列。
|
|
|
|
返回一个1维张量,长度为floor((end−start)/step),floor代表向下取整。包含从start到end,以step为步长的一组序列值(默认步长为1)。
|
|
|
|
返回一个全0的张量,形状由可变参数sizes定义。
索引,切片,连接,变异操作
|
|
参数:
seq(Tensors的序列) - 可以是相同类型的Tensor的任何python序列。dim(int,可选) - 张量连接的尺寸out(Tensor,可选) - 输出参数
|
|
在给定维度上对输入的张量序列seq 进行连接操作。
|
|
参数:
tensor(Tensor) – 待分块的输入张量chunks(int) – 分块的个数dim(int) – 沿着此维度进行分块
|
|
将张量沿着给定维度分解成的多个块。
|
|
参数:
input(Tensor) - 源张量dim(int) - 要索引的轴index(LongTensor) - 要收集的元素的索引out(Tensor,可选) - 目的张量
|
|
沿给定轴dim,将输入索引张量index指定位置的值进行聚合。
|
|
参数:
input(Tensor) – 输入张量dim(int) – 索引的轴index(LongTensor) – 包含索引下标的一维张量out(Tensor, 可选的) – 目标张量
|
|
返回一个新的张量,其索引input 张量沿尺寸 dim使用的条目中index这是一个LongTensor。
返回的Tensor具有与原始Tensor相同数量的尺寸。注意: 返回的张量不与原始张量共享内存空间。
|
|
根据掩码张量mask中的二元值,取输入张量中的指定项( mask为一个 ByteTensor),将取值返回到一个新的1D张量,张量 mask须跟input张量有相同数量的元素数目,但形状或维度不需要相同。注意: 返回的张量不与原始张量共享内存空间。
|
|
参数:
input(Tensor) – 源张量out(LongTensor, 可选的) – 包含索引值的结果张量
|
|
返回一个包含输入input中非零元素索引的张量。输出张量中的每行包含输入中非零元素的索引。
如果输入input有n维,则输出的索引张量output的形状为 z x n, 这里 z 是输入张量input中所有非零元素的个数。
|
|
参数:
tensor(Tensor) – 待分割张量split_size(int) – 单个分块的形状大小dim(int) – 沿着此维进行分割
|
|
将输入张量分割成相等形状的chunks(如果可分)。 如果沿指定维的张量形状大小不能被split_size 整分, 则最后一个分块会小于其它分块。
|
|
参数:
input(Tensor) – 输入张量dim(int, 可选的) – 如果给定,则input只会在给定维度挤压out(Tensor, 可选的) – 输出张量
|
|
将输入张量形状中的1 去除并返回。
|
|
参数:
tensor(Tensor) – 输入张量dim(int) – 插入维度的索引out(Tensor, 可选的) – 结果张量
|
|
返回一个新的张量,对输入的制定位置插入维度 1
如果dim为负,则将会被转化dim+input.dim()+1
|
|
参数:
sequence(Sequence) – 待连接的张量序列dim(int) – 插入的维度。必须介于 0 与 待连接的张量序列数之间。
|
|
沿着一个新维度对输入张量序列进行连接。序列中所有的张量都应该为相同形状。
|
|
参数:
input(Tensor) – 输入张量indices(LongTensor) – 索引到张量
|
|
用给定索引处的输入元素返回一个新的张量, 输入张量被看作是一维张量。 结果与指数具有相同形状。
|
|
参数:
input(Tensor) – 输入张量dim0(int) – 转置的第一维dim1(int) – 转置的第二维
|
|
返回输入矩阵input的转置。交换维度dim0和dim1。输出张量与输入张量共享内存,所以改变其中一个会导致另外一个也被修改。
|
|
参数:
tensor(Tensor) – 输入张量dim(int) – 删除的维度
|
|
移除指定维后,返回一个元组,包含了沿着指定维切片后的各个切片
随机抽样 Random sampling
|
|
设定生成随机数的种子,并返回一个 _torch.C.Generator 对象.
参数: seed (int or long) – 种子.
|
|
|
|
返回生成随机数的原始种子值(python long)。
|
|
|
|
返回随机生成器状态(ByteTensor)
|
|
设定随机生成器状态参数: new_state (torch.ByteTensor) – 期望的状态
|
|
|
|
从伯努利分布中抽取二元随机数(0 或者 1)。输入张量须包含用于抽取上述二元随机值的概率。 因此,输入中的所有值都必须在[0,1]区间,即 ( 0<=input_i<=1 )输出张量的第i个元素值, 将会以输入张量的第i个概率值等于1。返回值将会是与输入相同大小的张量,每个值为0或者1。
|
|
参数:
input(Tensor) – 包含概率值的张量num_samples(int) – 抽取的样本数replacement(bool, 可选的) – 布尔值,决定是否能重复抽取out(Tensor, 可选的) – 结果张量
|
|
返回一个张量,每行包含从input相应行中定义的多项分布中抽取的num_samples个样本。
当抽取样本时,依次从左到右排列(第一个样本对应第一列)。
如果输入input是一个向量,输出out也是一个相同长度num_samples的向量。如果输入input是有 (m )行的矩阵,输出out是形如( m * n )的矩阵。
如果参数replacement 为 True, 则样本抽取可以重复。否则,一个样本在每行不能被重复抽取。
参数num_samples必须小于input长度(即,input的列数,如果是input是一个矩阵)。
|
|
参数:
means(Tensor) – 均值std(Tensor) – 标准差out(Tensor) – 可选的输出张量
|
|
|
|
|
|
|
|
|
|
返回一个张量,包含从给定参数means,std的离散正态分布中抽取随机数。均值means是一个张量,包含每个输出元素相关的正态分布的均值。std是一个张量,包含每个输出元素相关的正态分布的标准差。均值和标准差的形状不须匹配,但每个张量的元素个数须相同。
序列化 Serialization
|
|
参数:
obj– 保存对象f- 类文件对象 (返回文件描述符)或一个保存文件名的字符串pickle_module– 用于pickling元数据和对象的模块pickle_protocol– 指定pickle protocal 可以覆盖默认参数
保存一个对象到一个硬盘文件上。参见 Recommended approach for saving a model
|
|
参数:
f– 类文件对象 (返回文件描述符)或一个保存文件名的字符串map_location– 一个函数或字典规定如何remap存储位置pickle_module– 用于unpickling元数据和对象的模块 (必须匹配序列化文件时的pickle_module )
|
|
从磁盘文件中读取一个通过torch.save()保存的对象。torch.load() 可通过参数map_location
动态地进行内存重映射,使其能从不动设备中读取文件。一般调用时,需两个参数: storage 和 location tag. 返回不同地址中的storage,或着返回None (此时地址可以通过默认方法进行解析). 如果这个参数是字典的话,意味着其是从文件的地址标记到当前系统的地址标记的映射。默认情况下, location tags中 “cpu”对应host tensors,‘cuda:device_id’ (e.g. ‘cuda:2’) 对应cuda tensors。
用户可以通过register_package进行扩展,使用自己定义的标记和反序列化方法。
数学操作Math operations
|
|
|
|
计算输入张量的每个元素绝对值
|
|
参数:
input(Tensor) – 输入张量value(Number) – 添加到输入每个元素的数out(Tensor, 可选的) – 结果张量
|
|
对输入张量input逐元素加上标量值value,并返回结果到一个新的张量out,即 ( out = tensor + value )。如果输入input是FloatTensor or DoubleTensor类型,则value 必须为实数,否则须为整数。
|
|
参数:
- tensor (Tensor) – 张量,对 tensor1 ./ tensor 进行相加
- value (Number, 可选的) – 标量,对 tensor1 ./ tensor2 进行相乘
- tensor1 (Tensor) – 张量,作为被除数(分子)
- tensor2 (Tensor) –张量,作为除数(分母)
- out (Tensor, 可选的) – 输出张量
|
|
对tensor2对tensor1逐元素相除,然后乘以标量值value 并加到tensor。
|
|
用tensor2对tensor1逐元素相乘,并对结果乘以标量值value然后加到tensor。张量的形状不需要匹配,但元素数量必须一致。如果输入是FloatTensor or DoubleTensor类型,则value 必须为实数,否则须为整数。
|
|
|
|
对输入input张量每个元素向上取整, 即取不小于每个元素的最小整数,并返回结果到输出。
|
|
操作定义如下:
|
|
如果输入是FloatTensor or DoubleTensor类型,则参数min max 必须为实数,否则须为整数。
参数:
- input (Tensor) – 输入张量
- min (Number) – 限制范围下限
- max (Number) – 限制范围上限
- out (Tensor, 可选的) – 输出张量
|
|
将输入input张量每个元素的夹紧到区间 ([min, max] ),并返回结果到一个新张量。
|
|
|
|
床函数: 返回一个新张量,包含输入input张量每个元素的floor,即不小于元素的最大整数。