在TensorFlow中什么才算是“张量”?

时间:2018-06-27 18:20:58

标签: tensorflow tensor

我是TensorFlow的新手,刚刚经历了热切的执行教程,并遇到了tf.decode_csv函数。不知道它,我阅读了文档。 https://www.tensorflow.org/api_docs/python/tf/decode_csv

我不太了解。

文档说“记录:字符串类型的张量”。 所以,我的问题是:什么才是“张量”?

我尝试了以下代码:

dec_res = tf.decode_csv('0.1,0.2,0.3', [[0.0], [0.0], [0.0]])
print(dec_res, type(dec_res))



l = [[1,2,3],[4,5,6],[7,8,9]]
r = tf.reshape(l, [9,-1])
print(l, type(l))
print(r, type(r))

因此列表dec_res包含tf.tensor对象。在我看来,这是合理的。但是根据文档,普通字符串还是“张量”吗?

然后,我使用tf.reshape函数尝试了其他操作。在文档https://www.tensorflow.org/api_docs/python/tf/reshape中,它表示“张量:张量”。因此,l应该是张量。但是它不是tf.tensor类型,而只是python list类型。这很令人困惑。

然后文档说

  

返回:

     

张量。与张量具有相同的类型。

但是l的类型为list,其中r的类型为tensorflow.python.framework.ops.Tensor。所以类型不一样。

然后我认为TensorFlow非常慷慨,因为它是张量。所以我尝试了:

class car(object):
def __init__(self, color):
    self.color = color


red_car = car('red')
#test_reshape = tf.reshape(red_car, [1, -1])
print(red_car.color) # to check, that red_car exists.

现在,注释中的行导致错误。

那么,有人可以帮助我找出什么是“张量”吗?

P.S .:我试图阅读文档中给出的tf.reshape的源代码

  

在tensorflow / python / ops / gen_array_ops.py中定义。

但是该文件在Github存储库中不存在。有人知道怎么读吗?

1 个答案:

答案 0 :(得分:3)

https://www.tensorflow.org/programmers_guide/tensors

  顾名思义,

TensorFlow是定义和运行的框架   张量的计算。张量是   向量和矩阵到更高的维度。在内部,   TensorFlow将张量表示为基数的n维数组   数据类型。

您可以通过使用tf.convert_to_tensor函数从各种python类型构建tensorflow操作(如重塑)来观察commes:

https://www.tensorflow.org/api_docs/python/tf/convert_to_tensor

  

所有标准的Python op构造函数均将此函数应用于每个   他们的Tensor值输入,这允许那些操作接受numpy   除Tensor对象之外的数组,Python列表和标量