我是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列表。
答案 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)将最有效。 如果您想像代码建议的那样创建动态列表,最好在将其传递给图表之前创建此列表。
请告诉我这是否有帮助!