在numpy 模块中的几种Tensor初始化会有不同的问题, 比如说:
>>> import mindspore as ms
>>> import mindspore.numpy as np
>>> a = ms.Tensor([1,2,3])
再执行以下代码就会出不一样的情况:
>>> b = np.arange(a[2]) # 正常
>>> c = np.zeros(a[2]) # 异常
>>> d = np.ones(a[2]) # 异常
同样是初始化, 为什么有的就可以用Tensor作为shape而有的却只能用list呢? 再说, mindspore 中也没有提供好的Tensor转list的方法呀 [急][急][急]
除了这类有输入接口有兼容性问题外, 还有如下例子:
>>> np.log(a)
为什么a 必须是float类型,而不支持int类型呢? 这种常见的函数操作在numpy和torch中都是支持的呀!
问题一:
由于arange和zeros/ones内部实现使用的算子不同,导致arange可以用Tensor初始化,而剩下两个不行。这个地方是mindspore.numpy功能不完善,不支持tensor类型,近期会尝试修复这个问题。
mindspore tensor转list可以通过如下方式:
a = Tensor([1, 2, 3])
a = a.asnumpy().tolist()
问题二:
是log算子本身问题,目前CPU,GPU支持float16, 32,64;Ascend支持float16, 32。至于为什么不支持int,有待和算子组的同事确认。