pytorch笔记二


序列化

save

load两个方法可以序列化存储对象到硬盘上做永久化存储

参数f可以是类文件对象(自定义或者类似的第三方文件对象,实现了写入和刷新)

或者是字符串或者路径对象含有文件名的.pt

并发与分布式

get_num_threadsCPU并行计算的线程数量

set_num_threads上面的设置

数学运算

abs张量的每个元素求绝对值

ceil向上取整

floor向下取整

clamp将张量的元素截断到[min-max]区间上

trunc将张量截断到最接近的整数


acos求每个元素的反余弦

cos求每个元素的余弦

cosh求每个元素的双曲余弦

asin求每个元素反正弦

sin求每个元素的正弦

sinh求每个元素的双曲正弦

atan求每个元素的反正切

tan求每个元素的正切

tanh求每个元素的双曲正切

atan2 pytorch存储加载和计算以及并发 - 图1#card=math&code=out%20%3D%20atan2%28input1%2Finput2%29)


add张量元素逐个加上value标量

div 每个元素逐个除以value标量

mul每个元素逐个乘以value标量

exp 每个元素逐个计算pytorch存储加载和计算以及并发 - 图2

fmod计算余数 input除以divisor除数

frac返回分数部分(小数)

lerp对两个张量start end做插值 pytorch存储加载和计算以及并发 - 图3#card=math&code=out_i%20%3D%20start_i%20%2B%20weight%2A%28end_i-start_i%29)

log计算自然对数

log1p计算自然对数pytorch存储加载和计算以及并发 - 图4#card=math&code=out_i%20%3D%20log%28input_i%2B1%29)

neg元素取负

pow按照 exponent作为幂值来求指数

reciprocal求每个元素的倒数

remainder计算逐元素余数 和fmod差不多

round舍入到最近整数

rsqrt每个元素的平方根倒数

sqrt每个元素求平方

sigmoid计算每个元素sigmoid

sign计算每个元素正负 负数输出-1 正数输出1


addcdiv(tensor,value,tensor1,tensor2) pytorch存储加载和计算以及并发 - 图5张量形状不需要匹配,但是元素数量必须一致。

addcmul和上面形式差不多pytorch存储加载和计算以及并发 - 图6#card=math&code=out%20%3D%20tensor%20%2B%20value%20%5Ctimes%20%28tensor2%20%5Cstar%20tebsor1%29)

维度减少的操作

cumprod dim上计算累计的乘积pytorch存储加载和计算以及并发 - 图7

cumsum dim上计算累计和pytorch存储加载和计算以及并发 - 图8

dist other计算输入和它的差的p范数 1绝对距离 2欧式距离

简单说就是两个张量差的范数指数和开范数方

mean求均值dim

median求中位数dim

mode求众数dim

std求标准差dim

var求方差dim

norm张量的范数幂指数和开范数方

prod 求连乘dim

sum求总和dim


比较操作

eq比较两个向量每个元素是否相等返回为0或者1的bytetensor

equal两个向量是否完全等值

ge张量a是否>=张量b

gt张量a是否>张量b

le 小于等于

lt小于

ne不等于

kthvalue dim上第k个最小值

max张量上的最大值 /dim,或者两个张量保留最大值

min 1.张量上所有元素的最小值 2.指定维度上张量最小值 3.两个张量保留最小值

sort进行升序排列,默认是按照最后一维

topk沿dim返回最大k个值

cross计算向量积

diag对角阵对角线转换

histc计算直方图

renorm计算 对张量进行规范化,如果元素小于最大范数值就不变动

trace对角线和

tril矩阵下三角

triu矩阵上三角


addbmm批量矩阵乘

pytorch存储加载和计算以及并发 - 图9%2B(%5Calpha*%5Csum(batch1_i%40batch2_i))#card=math&code=res%20%3D%20%28%5Cbeta%20%2A%20M%29%2B%28%5Calpha%2A%5Csum%28batch1_i%40batch2_i%29%29)
pytorch存储加载和计算以及并发 - 图10)#card=math&code=i%20%5Cin%280%2Cbatch.size%280%29%29)

addmm矩阵乘

pytorch存储加载和计算以及并发 - 图11%2B(%5Calpha*mat1%40mat2)#card=math&code=outt%20%3D%20%28%5Cbeta%2AM%29%2B%28%5Calpha%2Amat1%40mat2%29)

addmv矩阵和向量行相乘

pytorch存储加载和计算以及并发 - 图12%2B(%5Calpha*(mat%40vec))#card=math&code=out%20%3D%20%28%5Cbeta%2AM%29%2B%28%5Calpha%2A%28mat%40vec%29%29)


线代操作

addr(beta=1,mat,alpha=1,vec1,vec2)->tensor

对vec1和vec2做张量积操作,也就是向量张量积

pytorch存储加载和计算以及并发 - 图13%2B(%5Calpha*batch1_i%20%5Ctimes%20batch2_i)#card=math&code=res_i%20%3D%20%28%5Cbeta%2AM_i%29%2B%28%5Calpha%2Abatch1_i%20%5Ctimes%20batch2_i%29)

最后将矩阵加到结果上

baddbmm对两个batch1batch2存储的矩阵进行批量矩阵乘的操作,mat最终会加到结果中,pytorch存储加载和计算以及并发 - 图14%2B(%5Calpha*batch1_i%20%5Ctimes%20batch2_i)#card=math&code=res_i%20%3D%20%28%5Cbeta%2AM_i%29%2B%28%5Calpha%2Abatch1_i%20%5Ctimes%20batch2_i%29)这个和前面的addbmm函数有哪些差异。