为什么这个张量两次具有dtype属性

时间:2019-06-27 21:25:17

标签: numpy tensorflow

我刚刚注意到这个奇怪的张量:

Out[124]: <tf.Tensor: id=7672038, shape=(1,), dtype=uint8, numpy=array([1], dtype=uint8)>

它有两次dtype。通常,您无法做到这一点。例如,

tf.convert_to_tensor(np.array([1]))
Out[126]: <tf.Tensor: id=7672042, shape=(1,), dtype=int32, numpy=array([1])>

那是为什么,有什么区别?

我只是注意到了这一点:后者可以用作张量的索引,而前者则不能。它将引发此错误:

  

TypeError:仅整数,切片(:),省略号(...),tf.newaxis   (None)和标量tf.int32 / tf.int64张量是有效索引,得到1

这是一个愚蠢的错误,导致它说“得到1”,而1是合法索引!因为它是一个大声喊叫的整数!参见上面的dtype。

1 个答案:

答案 0 :(得分:0)

它没有两次dtype,第二次dtype用于numpy数组。