1 系统环境
win10
Mindspore 1.8.1
python 3.9.13
2 报错信息
2.1 问题描述
创建Tensor时报错
2.2 报错信息
Traceback (most recent call last):
File "D:\test.py", line 3, in
t1 = mindspore.tensor([1,2,3])
TypeError: 'mindspore._c_expression.typing.TensorType' object is not callable
2.3 脚本代码
import mindspore
t1 = mindspore.tensor([1,2,3])
print(t1)
3 根因分析
代码中Tensor错误的写成了小写tensor,应该为Tensor
mindspore源码里面
init.py
from .common import *
common\init.py
from . import dtype
common\dtype.py
tensor = typing.TensorType()
TensorType定义如下:
class TensorType(Type):
# no doc
def element_type(self): # real signature unknown; restored from __doc__
""" element_type(self: mindspore._c_expression.typing.TensorType) -> mindspore._c_expression.typing.Type """
pass
def __getstate__(self): # real signature unknown; restored from __doc__
""" __getstate__(self: mindspore._c_expression.typing.TensorType) -> tuple """
return ()
def __init__(self, *args, **kwargs): # real signature unknown; restored from __doc__
"""
__init__(*args, **kwargs)
Overloaded function.
1. __init__(self: mindspore._c_expression.typing.TensorType) -> None
2. __init__(self: mindspore._c_expression.typing.TensorType, element: mindspore._c_expression.typing.Type) -> None
"""
pass
def __setstate__(self, arg0): # real signature unknown; restored from __doc__
""" __setstate__(self: mindspore._c_expression.typing.TensorType, arg0: tuple) -> None """
pass
父类定义如下:
class Type(__pybind11_builtins.pybind11_object):
# no doc
def __deepcopy__(self, arg0): # real signature unknown; restored from __doc__
""" __deepcopy__(self: mindspore._c_expression.typing.Type, arg0: dict) -> mindspore._c_expression.typing.Type """
pass
def __eq__(self, arg0): # real signature unknown; restored from __doc__
""" __eq__(self: mindspore._c_expression.typing.Type, arg0: object) -> bool """
return False
def __hash__(self): # real signature unknown; restored from __doc__
""" __hash__(self: mindspore._c_expression.typing.Type) -> int """
return 0
def __init__(self, *args, **kwargs): # real signature unknown
pass
def __repr__(self): # real signature unknown; restored from __doc__
""" __repr__(self: mindspore._c_expression.typing.Type) -> str """
return ""
def __str__(self): # real signature unknown; restored from __doc__
""" __str__(self: mindspore._c_expression.typing.Type) -> str """
return ""
typing.TensorType()([1,2,3]) 这种方式是无法调用的,所以会报错。
common\init.py
from .tensor import Tensor, RowTensor, SparseTensor, COOTensor, CSRTensor
mindspore.Tensor 最终调用的是common\tensor.py里面的Tensor类
4 解决方案
修改mindspore.tensor 为mindspore.Tensor
import mindspore
t1 = mindspore.Tensor([1,2,3])
print(t1)