美文网首页
tensorflow 转换ckpt 到pb

tensorflow 转换ckpt 到pb

作者: 去大海边吹海风 | 来源:发表于2018-09-03 14:29 被阅读0次

    • 大家转成pb文件应该是只想用forward过程就可以了, 我主要借鉴了这篇博客https://www.jianshu.com/p/c9fd5c01715e,写的比较详细,默认情况下在把变量转成常量时,会把依赖的前面节点都会保存。值得注意的就是output_node_names 怎么确定;
      constant_graph = graph_util.convert_variables_to_constants(sess, graph_def,
                                                                       output_node_names=['dense_1/BiasAdd'])
    
    • 我的问题是,由于我没有给每层网络起名字,所以只能用默认的网络op的名字,我用下面这几句话打印出来op之后,猜测了一个名字应该是最后一个层的op名字吧,但是我错了。我这个网络是前面比较久远的tensorflow 1.4.0训练的,所以网络名字和1.9的不一致;
            graph_def = sess.graph.as_graph_def()
            ops = sess.graph.get_operations()
            for op in ops:
                print(op.name, op.outputs)
    
    • 我贴出我的名字给大家参考一下
      tensorflow 1.4.0 我虽然只用了两层dense操纵,但是输出的op包含三个dense, 节点名字是 dense_2/BiasAdd
    dense_1/kernel/Initializer/random_uniform/shape
    dense_1/kernel/Initializer/random_uniform/min
    dense_1/kernel/Initializer/random_uniform/max
    dense_1/kernel/Initializer/random_uniform/RandomUniform
    dense_1/kernel/Initializer/random_uniform/sub
    dense_1/kernel/Initializer/random_uniform/mul
    dense_1/kernel/Initializer/random_uniform
    dense_1/kernel
    dense_1/kernel/Assign
    dense_1/kernel/read
    dense_1/bias/Initializer/zeros
    dense_1/bias
    dense_1/bias/Assign
    dense_1/bias/read
    dense_2/MatMul
    dense_2/BiasAdd
    

    tensorflow 1.9.0 结果就变了,就变成dense_1/BiasAdd
    tensorflow1.9训练的模型不能在tf 1.4 下面转换,相反则可以。

    相关文章

      网友评论

          本文标题:tensorflow 转换ckpt 到pb

          本文链接:https://www.haomeiwen.com/subject/anwbwftx.html