为什么在使用sess.run(placeholder,feed_dict)时返回占位符的张量描述?

时间:2019-06-11 15:35:40

标签: python tensorflow deep-learning

install.packages('ggplot2')

在上面的代码段中,它打印张量描述 “成本= Tensor(“ logistic_loss_6:0”,dtype = float32)“ ,而不是成本值。

但是,如果我使用

# install.packages('ggplot2')
library(ggplot2)
p <- ggplot(df)
p <- p + geom_bar(aes(mid, perc), stat='identity')
p

然后输出成本。

我的问题是-当我运行sess.run(cost,feed ...)时,是否不评估和存储成本?

1 个答案:

答案 0 :(得分:1)

关于Tensorflow的基本知识之一是它创建了一个包含所有操作的计算图。因此,实际上,变量def some_function(potentially_empty_df): if len(potentially_empty_df) == 0: return else: // Do other stuff 的内容是张量,它是图形的运算,这就是为什么在直接打印时得到所得到的结果的原因。为了使计算图实际计算某些东西,您必须在将输入馈入占位符(用作Tensorflow计算图的输入)的同时调用cost,然后sess.run()调用返回计算值。

调用sess.run()不会修改图,它仅使用它来计算给定输入所需的张量值。因此,您的问题的答案是:对它进行评估,评估的值由sess.run()返回,但它不存储在张量中。将张量视为指向图形的符号指针。张量只是表示图中计算流程中的一个节点,它从不包含评估值。然后在给定sess.run()中的输入的情况下,使用sess.run(tensor, feed_dict)运行由符号张量定义的计算。这是Tensorflow的核心概念,理解这一点非常重要。