Swa*_*air 3 swift tensorflow swift-for-tensorflow
这工作正常:
import TensorFlow
var t = Tensor<Float>([[1, 0], [0, 1]])
Run Code Online (Sandbox Code Playgroud)
但以下给出了错误
import TensorFlow
var a = [[1, 0], [0, 1]]
var t = Tensor<Float>(a)
Run Code Online (Sandbox Code Playgroud)
error: expression type 'Tensor<Float>' is ambiguous without more context
var t = Tensor<Float>(a)
^~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
为什么会出现这种情况?另外,如何快速从数组创建张量。
您的第一个代码之所以有效,是因为它使用文字而不是已声明的变量(其类型已确定)来初始化Tensor<Float>. 编译器对文字进行特殊处理。
Tensor.init您正在调用的重载是this。在你的情况下,它接受一个ShapedArray<Float>.
ShapedArray符合协议ExpressibleByArrayLiteral,这意味着编译器可以将数组文字ShapeArray隐式转换为。但是,这仅限于文字,例如[[1, 0], [0, 1]],而不是引用数组类型变量的标识符,例如a。的类型被编译器a推断为 a ,并且编译器无法将 a 隐式转换为。[[Int]][[Int]]ShapedArray<Float>
Float虽然不太重要,但符合ExpressibleByIntegerLiteral(因此1可以0转换为浮点数)的事实也在允许代码编译方面发挥了作用。
之所以var aa: Tensor<Float> = [[1.0, 0.0], [1.0, 0.0]]有效,是因为Tensor也符合ExpressibleByArrayLiteral。
| 归档时间: |
|
| 查看次数: |
635 次 |
| 最近记录: |