Code Monkey home page Code Monkey logo

Comments (16)

YuPeize avatar YuPeize commented on July 28, 2024 1

只做graph_util.convert_variables_to_constants的话是有70多M,之后再做一下strip_unused_lib.strip_unused(记得指定一下input_node_names和output_node_names)就只有5点几M了。

from pfld.

guoqiangqi avatar guoqiangqi commented on July 28, 2024

分支网络也可以不用保存

from pfld.

liguiyuan avatar liguiyuan commented on July 28, 2024

各位老哥:
我训练完后模型文件很大
.meta文件有140M
.data-00000有8M多

就算转换成.pb文件 也要76M
和作者的模型大了很多呀

有知道怎么优化的呢么

转为pb文件没有那么大呀,我的只有8.8MB左右,如果不要辅助网络只有6.9MB左右

from pfld.

guoqiangqi avatar guoqiangqi commented on July 28, 2024

各位老哥:
我训练完后模型文件很大
.meta文件有140M
.data-00000有8M多
就算转换成.pb文件 也要76M
和作者的模型大了很多呀
有知道怎么优化的呢么

转为pb文件没有那么大呀,我的只有8.8MB左右,如果不要辅助网络只有6.9MB左右

转pb之前有多大呢。

from pfld.

liguiyuan avatar liguiyuan commented on July 28, 2024

转之前 .meta文件有140M,.data-00000有8.7M,应该是正常的

from pfld.

quliulangle avatar quliulangle commented on July 28, 2024

转之前 .meta文件有140M,.data-00000有8.7M,应该是正常的

请问 是按照 output_node_names = "pfld_inference/fc/BiasAdd" 这个节点进行freeze的么

from pfld.

quliulangle avatar quliulangle commented on July 28, 2024

转之前 .meta文件有140M,.data-00000有8.7M,应该是正常的

`def freeze_graph(input_checkpoint,output_graph):

# checkpoint = tf.train.get_checkpoint_state(model_folder) 
# input_checkpoint = checkpoint.model_checkpoint_path 
 # 指定输出的节点名称,该节点名称必须是原模型中存在的节点
output_node_names = "pfld_inference/fc/BiasAdd"
saver = tf.train.import_meta_graph(input_checkpoint + '.meta', clear_devices=True)
graph = tf.get_default_graph() # 获得默认的图
input_graph_def = graph.as_graph_def()  # 返回一个序列化的图代表当前的图
 with tf.Session() as sess:
    saver.restore(sess, input_checkpoint) 
    output_graph_def = graph_util.convert_variables_to_constants(  
        sess=sess,
        input_graph_def=input_graph_def,# 等于:sess.graph_def
        output_node_names=output_node_names.split(","))
     with tf.gfile.GFile(output_graph, "wb") as f: 
        f.write(output_graph_def.SerializeToString()) #序列化输出
    print("%d ops in the final graph." % len(output_graph_def.node)) 

`

这是我的转换代码,请问这样转换有什么问题吗?.meta文件有140M,转换后的.pb文件有76M,太大太大了,完全不能移动端使用。

from pfld.

liguiyuan avatar liguiyuan commented on July 28, 2024

转之前 .meta文件有140M,.data-00000有8.7M,应该是正常的

`def freeze_graph(input_checkpoint,output_graph):

# checkpoint = tf.train.get_checkpoint_state(model_folder) 
# input_checkpoint = checkpoint.model_checkpoint_path 
 # 指定输出的节点名称,该节点名称必须是原模型中存在的节点
output_node_names = "pfld_inference/fc/BiasAdd"
saver = tf.train.import_meta_graph(input_checkpoint + '.meta', clear_devices=True)
graph = tf.get_default_graph() # 获得默认的图
input_graph_def = graph.as_graph_def()  # 返回一个序列化的图代表当前的图
 with tf.Session() as sess:
    saver.restore(sess, input_checkpoint) 
    output_graph_def = graph_util.convert_variables_to_constants(  
        sess=sess,
        input_graph_def=input_graph_def,# 等于:sess.graph_def
        output_node_names=output_node_names.split(","))
     with tf.gfile.GFile(output_graph, "wb") as f: 
        f.write(output_graph_def.SerializeToString()) #序列化输出
    print("%d ops in the final graph." % len(output_graph_def.node)) 

`

这是我的转换代码,请问这样转换有什么问题吗?.meta文件有140M,转换后的.pb文件有76M,太大太大了,完全不能移动端使用。

应该是你的代码还有些问题,你可以参考tensorflow 的models/research/slim/export_inference_graph.py 来导出graph,然后再去调用tensorflow/python/tools/freeze_graph.py 来进行冻结

from pfld.

quliulangle avatar quliulangle commented on July 28, 2024

现在去掉了训练过程中的test代码,.meta文件变为了136M,还是比较大

from pfld.

quliulangle avatar quliulangle commented on July 28, 2024

转换成.pb过大的问题已解决。目前生成的1.0的pb模型文件5.1M,0.25X的pb模型文件825k

from pfld.

Augnine avatar Augnine commented on July 28, 2024

@quliulangle 我遇到和你同样的问题,请问你是怎么解决的?

from pfld.

DeepJake avatar DeepJake commented on July 28, 2024

转换成.pb过大的问题已解决。目前生成的1.0的pb模型文件5.1M,0.25X的pb模型文件825k

@quliulangle 您好,我也遇到了这个问题,请问最后是怎么解决的

from pfld.

tiqq111 avatar tiqq111 commented on July 28, 2024

转换成.pb过大的问题已解决。目前生成的1.0的pb模型文件5.1M,0.25X的pb模型文件825k

请问大神,如何解决的,我的也有这个问题,转完70多兆

from pfld.

starhiking avatar starhiking commented on July 28, 2024

转之前 .meta文件有140M,.data-00000有8.7M,应该是正常的

`def freeze_graph(input_checkpoint,output_graph):

# checkpoint = tf.train.get_checkpoint_state(model_folder) 
# input_checkpoint = checkpoint.model_checkpoint_path 
 # 指定输出的节点名称,该节点名称必须是原模型中存在的节点
output_node_names = "pfld_inference/fc/BiasAdd"
saver = tf.train.import_meta_graph(input_checkpoint + '.meta', clear_devices=True)
graph = tf.get_default_graph() # 获得默认的图
input_graph_def = graph.as_graph_def()  # 返回一个序列化的图代表当前的图
 with tf.Session() as sess:
    saver.restore(sess, input_checkpoint) 
    output_graph_def = graph_util.convert_variables_to_constants(  
        sess=sess,
        input_graph_def=input_graph_def,# 等于:sess.graph_def
        output_node_names=output_node_names.split(","))
     with tf.gfile.GFile(output_graph, "wb") as f: 
        f.write(output_graph_def.SerializeToString()) #序列化输出
    print("%d ops in the final graph." % len(output_graph_def.node)) 

`
这是我的转换代码,请问这样转换有什么问题吗?.meta文件有140M,转换后的.pb文件有76M,太大太大了,完全不能移动端使用。

应该是你的代码还有些问题,你可以参考tensorflow 的models/research/slim/export_inference_graph.py 来导出graph,然后再去调用tensorflow/python/tools/freeze_graph.py 来进行冻结

slim/export_inference_graph.py 的参数只有model_name 和 output_file 啊。 您当时转的时候命令是啥,能分享一下吗

from pfld.

Sihaiyinan avatar Sihaiyinan commented on July 28, 2024

只做graph_util.convert_variables_to_constants的话是有70多M,之后再做一下strip_unused_lib.strip_unused(记得指定一下input_node_names和output_node_names)就只有5点几M了。

您好,请问一下应该怎么指定input_node_names和output_node_names,我现在运行一直提示没有对应的节点,请问该怎么处理?

from pfld.

fensite avatar fensite commented on July 28, 2024

转换成.pb过大的问题已解决。目前生成的1.0的pb模型文件5.1M,0.25X的pb模型文件825k

您好,打扰了,请问您是怎么解决的?我现在也遇到了同样的问题

from pfld.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.