对于我的项目,我需要将有向图转换为该图的 tensorflow 实现,就好像它是一个神经网络一样。在 tensorflow 版本 1 中,我可以将所有输入定义为占位符,然后使用图形的广度优先搜索为输出生成数据流图。然后我将使用 feed_dict 输入我的输入。然而,在 TensorFlow v2.0 中,他们决定完全取消占位符。
如何在不使用占位符的情况下为每个接受可变数量输入并返回可变数量输出的图形制作 tf.function?
我想生成一个这样的 tf.function ,它适用于任意非循环有向图,以便我可以利用 tensorflow GPU 支持在生成图形后连续运行数千次前馈。
编辑代码示例:
我的图被定义为字典。每个键代表一个节点,并具有另一个字典的对应值,指定具有权重的传入和传出链接。
{
"A": {
"incoming": [("B", 2), ("C", -1)],
"outgoing": [("D", 3)]
}
}
Run Code Online (Sandbox Code Playgroud)
为简洁起见,我省略了 B、C 和 D 的条目。这是我将如何在 tensorflow v1.0 中构建我想要的代码,其中输入只是一个严格输入图形的键值列表
def construct_graph(graph_dict, inputs, outputs):
queue = inputs[:]
make_dict = {}
for key, val in graph_dict.items():
if key in inputs:
make_dict[key] = tf.placeholder(tf.float32, name=key)
else:
make_dict[key] = None
# Breadth-First search of graph starting from inputs
while len(queue) …Run Code Online (Sandbox Code Playgroud)