tensorflow multiply graph 操作

前言

我遇到了在同一个python脚本中加载两个同样的网络结构,并且他们包含同样的name的模块,在tensorflow中如果name相同的模块就会冲突,要想解决问题,利用两个graph分别包裹他们,并且用两个session来处理。如果能带来帮助很开心!

示例代码

lefteye_graph = tf.Graph()

righteye_graph = tf.Graph() 

with lefteye_graph.as_default():

    .....net construct.......

    sess_left = tf.Session(graph=lefteye_graph)

    sess_left.run(tf.global_variables_initializer())

    sess_left.run(tf.local_variables_initializer())

    left_saver = tf.train.Saver(tf.global_variables())

    graph = tf.get_default_graph()

    left_saver.restore(sess_left, model_name)

...................

with righteye_graph.as_default():

    ...............

    sess_right = tf.Session(graph=righteye_graph)

    sess_right.run(tf.global_variables_initializer())

    sess_right.run(tf.local_variables_initializer())

    right_saver = tf.train.Saver()

    right_saver.restore(sess_right, model_name)

    graph = tf.get_default_graph()

    ..........................

sess_left.close()

sess_right.close()

代码理解

其中的as_default()是必须的,表示在该模块中该图作为默认图

遇到的问题

其间查阅了很多种写法,但是我一直遇到后面的graph报找不到某个tensor的错误,我的错误是因为代码是从上个模块copy然后修改的,后面在run中sess用成上面的,又由于tensorflow在with内部的变量也作为全局变量,所以不会提示错误,所以一直报错。

最后看到链接中的文章认为代码一定没错误,然后把后半部分移到前面去发现没有定义的变量才发现问题
这篇文章写得不错

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 介绍 首先让我们来看看TensorFlow! 但是在我们开始之前,我们先来看看Python API中的Ten...
    JasonJe阅读 11,857评论 1 32
  • 沈威读书打卡第50天,今天我读懂了不要输给自己的作文,文章讲述了小主人练习盲打-比赛时紧张,忘光了-比赛失败-输给...
    四一沈威阅读 366评论 0 0
  • 浮萍说: 睡觉可以养颜, 读文可以改变气质, 在十里桃花, 煮杨梅酒乃是最爱, 喝了人生这杯酒, 谁喝都会醉, 但...
    爱上一叶浮萍阅读 575评论 0 6
  • 不懂世间疾苦 不知柴米昂贵 不觉人性难测 哀乐,苦痛,无关 嘟囔不清的言语 没有人懂的意思 毁灭世界的勇气 天地可...
    仙人f阅读 286评论 0 7
  • 文/翎月 目录 第二章,烟雨往事今时非 这几日,虽然秦泠月已然养好伤,但心里的伤还是不减,常常一个人独坐流泪,爹娘...
    云岫__阅读 676评论 0 4