制作一个列表并在TensorFlow

时间:2017-02-28 21:07:58

标签: python tensorflow

我是TensorFlow的新手。我无法理解如何在TensorFlow中创建动态“pythonic”列表。基本上,我对张量对象(train_data[i])执行一些计算并将其附加到“列表”X,我希望它是一个形状为(100,)的张量

我想做这样的事情:

X = []
for i in range(100):
    q = tf.log(train_data[i]) 
    print(q)    #Tensor("Log:0", shape=(), dtype=float32) 
    X.append(q)

我希望X成为形状(100,)的张量,基本上是一个张量对象的列向量。如果我运行上面的代码,我会得到一个TensorObjects的python列表。

2 个答案:

答案 0 :(得分:7)

如果您想将X转换为(100,)张量,可以在for循环后添加X = tf.stack(X)

X = []
for i in range(100):
  q = tf.log(train_data[i]) 
  print(q)    #Tensor("Log:0", shape=(), dtype=float32) 
  X.append(q)
X = tf.stack(X)

这是一个有用的结构,您可能需要tf.unstack一些张量,循环结果列表,然后使用tf.stack返回单个张量。

答案 1 :(得分:0)

我认为这里真正的答案是你必须改变你的思维方式。在Tensorflow中,首先定义计算图,然后使用值作为输入对其进行评估。

对于您的示例:如果X确实是具有形状(100,1)的Tensor,则tf.log(X)将最有效。 如果您想像代码建议的那样创建动态列表,最好在将其传递给图表之前创建此列表。

请告诉我这是否有帮助!