1、执行原理:
首先:对于sess.sun(fetch), 只有fetch里的图元素, 才会被执行, 不在fetch中的图节点是不会执行的;
其次:sess.run()里面的执行顺序是按fetch列表中的元素,在计算图中的出现的先后顺序执行一次完后,最后统一输出,不会重复执行
即:fetch列表中的节点打乱时, 取出来的值依然是一次流程图计算出来的结果,不是按照fetch列表中出现的先后顺序执行。
2、常见问题分析及解决:
当sess.run([a])一个元素,出现如下:
Got exception run : run 4 fetches which are before stage
原因:a包含了多个tensor,在计算图的多个地方出现过,直接执行该单一变量无法兼顾整体,会造成后面出现的地方没有stage进来,故报错
解决办法:(1)第一种是,只取单一tensor
(2)第二种,执行一个能够使a全部stage完之后的节点,跟在a后面,sess.run([a,b]),在计算图上b是a全部加载之后流到的下一个节点,这样保证a全部加载上。