从swift数组创建张量
这很好:从swift数组创建张量,swift,tensorflow,swift-for-tensorflow,Swift,Tensorflow,Swift For Tensorflow,这很好: 导入TensorFlow var t=张量([[1,0],[0,1]]) 但是下面给出了一个错误 导入TensorFlow 变量a=[[1,0],[0,1]] var t=张量(a) 错误:表达式类型“Tensor”不明确,没有更多上下文 var t=张量(a) ^~~~~~~~~~~~~~~~ 为什么会发生这种情况?还有,如何从swift中的数组创建张量 您的第一个代码之所以有效,是因为它使用了文本,而不是已经声明的变量(其类型已经确定)来初始化张量。文本由编译器进行特殊处理
导入TensorFlow
var t=张量([[1,0],[0,1]])
但是下面给出了一个错误
导入TensorFlow
变量a=[[1,0],[0,1]]
var t=张量(a)
错误:表达式类型“Tensor”不明确,没有更多上下文
var t=张量(a)
^~~~~~~~~~~~~~~~
为什么会发生这种情况?还有,如何从swift中的数组创建张量 您的第一个代码之所以有效,是因为它使用了文本,而不是已经声明的变量(其类型已经确定)来初始化
张量。文本由编译器进行特殊处理
正在调用的Tensor.init
的重载为。在您的情况下,它接受一个ShapedArray
符合协议ExpressibleByArrayLiteral
,这意味着编译器可以隐式地将数组文字转换为ShaperRay
。但是,这仅限于文本,例如[[1,0],[0,1]]
,而不限于引用数组类型变量的标识符,例如a
<代码>一个
的类型被编译器推断为一个[[Int]]
,并且编译器不能隐式地将[[Int]]
转换为形状数组
虽然不太重要,但是Float
符合ExpressibleByIntegerLiteral
(因此1
和0
可以转换为Float)这一事实在允许代码编译方面也起到了作用
之所以
var aa:Tensor=[[1.0,0.0],[1.0,0.0]]
有效,是因为Tensor
也符合expressiblebyarayliteral
什么是张量?如果它是typeOf[[1,0],[0,1]],你只需要写一个不带typecastTensor的a=t就可以了。CastTensor创建一个张量。[[1,0],[0,1]]的类型是数组。我想要一个张量,而不是一个数组。如果你要写var a:tensor=[[1,0],[0,1]]?var t:tensor=a真的有效吗?我没想到…@Swair,因为使用SomeClass(myClass)实际上意味着SomeClass.init(typeOf:Any),您可以编写一个扩展并将自己的init func添加到类型转换数组中
error: expression type 'Tensor<Float>' is ambiguous without more context
var t = Tensor<Float>(a)
^~~~~~~~~~~~~~~~