其他分享
首页 > 其他分享> > 一位初学者对Mindspore的一些建议(1)

一位初学者对Mindspore的一些建议(1)

作者:互联网

转载地址:https://bbs.huaweicloud.com/forum/thread-66135-1-1.html

作者:Yesterday

最近开始学习mindspore,发现Mindspore对于一位向量的定义是非常不明确的,导致后续操作非常不方便,所以关于这方面我提一下建议,希望Mindspore的开发部门可以注意一下:

一维向量的默认是行向量还是列向量,在不同的软件库中定义是不同的,然而在Mindspore中,情况却非常奇怪:

综上所述,Mindspore中一维向量的不明确导致后续操作非常麻烦。其他的库一般都有明确定义,例如我之前一直使用的DyNet(C++版)中所有一维向量默认是列向量,(N)维和(N,1)维的定义是完全等价的,这样从(N,M)维的矩阵中如果抽出某一行就是(1,M)维,抽出某一列就是(N,1)维【等价于(N)维】。提取出行或列之后,可以直接用concatenate函数拼接回原来的二维矩阵。更重要的是,一维向量可以直接参与二维矩阵的运算,也可以用transpose函数在行和列之间进行切换,这样时候起来会方便很多。

所以建议Mindspore明确一下一维向量的定义,并且和高维Tensor兼容,这样一维向量不需要reshape就可以直接参与矩阵运算。最好设置一个默认值,但是在声明的时候定义的时候可以按照自己的需求设定是行向量还是列向量。而且如果直接用M[:,i]或着M[i,:]提取矩阵的某一行或列的话,也会使维度降到一维,这样也是很不方便,当然为了兼容Python这一点我也不是不能理解,但是我觉得可以另外设置一个算子(比如DyNet里面有select_rows和select_cols函数),从矩阵中提取行或者列的时候保持形状不变。

标签:Tensor,mindspore,矩阵,一位,行向量,初学者,一维,Mindspore,向量
来源: https://blog.csdn.net/skytttttt9394/article/details/119149661