np.empty()返回一个随机元素的矩阵,大小按照参数定义。
返回的是输入列表中最大值的位置
它重要的特点就是在有多个最大值的情况下,只返回第一个出现的最大值的位置。
如果需要返回所有最大值的位置的话,np.where(a == np.max(a))
Numpy中的sum函数,无参时,所有全加;axis=0,按列相加;axis=1,按行相加;
ret_list = [item for item in a_list if item not in b_list] + [item for item in b_list if item not in a_list]
a=rand(2,3,4); %这是一个三维数组,各维的长度分别为:2,3,4
%现在交换第一维和第二维:
permute(A,[2,1,3]) %变成3*2*4的矩阵
参考:https://blog.csdn.net/york1996/article/details/81876886
这个函数用来随机排列一个数组
参考:https://blog.csdn.net/zhlw_199008/article/details/80569167
view只能用在contiguous的variable上。如果在view之前用了transpose, permute等,需要用contiguous()来返回一个contiguous copy。
一种可能的解释是:
有些tensor并不是占用一整块内存,而是由不同的数据块组成,而tensor的view()
操作依赖于内存是整块的,这时只需要执行contiguous()
这个函数,把tensor变成在内存中连续分布的形式。
torch.Tensor.view
会返回具有相同数据但大小不同的新张量。 返回的张量必须有与原张量相同的数据和相同数量的元素,但可以有不同的大小。一个张量必须是连续contiguous()
的才能被查看。类似于Numpy的np.reshape()。
1、torch.squeeze()主要是对数据维度进行压缩,去掉维数为1的维度。比如是一行或者一列这种,一个一行三列(1,3)的数去掉第一个维数为一的维度之后就变成(3)行。
1)torch.squeeze(a)就是将a中所有为1的维度删掉。不为1的维度没有影响。
2)a.squeeze(N) 或b=torch.squeeze(a,N)就是去掉a中指定位置的维数为一的维度。
2、torch.unsqueeze()主要是对数据维度进行扩充,给指定位置加上维数为1的维度。比如原本有个三行的数据(3),在0的位置加了一维就变成一行三列(1,3)。
1)a.squeeze(N) 或b=torch.squeeze(a,N)就是在a中指定位置N加上一个维数为1的维度。
注:squeeze()和unsqueeze()参数均可以为负数,例如-1相当于倒数第一个位置。
表示会给出一个区间,在区间之外的数字将被区间边缘数字替代,例如给定一个区间[0,1],小于0的将变成0,大于1则变成1,其余不变。
首先声明它与numpy.flatten()所要实现的功能是一致的(将多维数组降位一维),两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,而numpy.ravel()返回的是视图(view,也颇有几分C/C++引用reference的意味),会影响(reflects)原始矩阵。
将x中的元素从小到大排列,提取其对应的index(索引),然后输出到y。当num<0时,np.argsort()[num]就是把数组y的元素反向输出,例如np.argsort()[-1]即输出x中最大值对应的index。
把两个tensor拼接在一起:C = torch.cat( (A,B),0 ) #按维数0拼接(竖着拼)
C = torch.cat( (A,B),1 ) #按维数1拼接(横着拼)
使用torch.cat((A,B),dim)时,除拼接维数dim数值可不同外其余维数数值需相同,方能对齐。
1)A*B表示按元素位置相乘
2)A.dot(B)表示按矩阵相乘
1)torch.mm(A,B)或A.mm(B)或torch.matmul(A,B)表示按矩阵相乘
2)torch.mul(A,B)表示按元素位置相乘