Skip to content

How to freeze the model? #340

@lily0101

Description

@lily0101

I have trained my data with this model, and there are some .ckpt files, but I want to generate the .pb file for the mobile. But I don't know the output and the input node name, I just print some node name when I use demo.py to test images. the output is below:
Placeholder Placeholder_1 Placeholder_2 ....... vgg_16/cls_score/weights/Initializer/random_normal/shape vgg_16/cls_score/weights/Initializer/random_normal/mean vgg_16/cls_score/weights/Initializer/random_normal/stddev vgg_16/cls_score/weights/Initializer/random_normal/RandomStandardNormal vgg_16/cls_score/weights/Initializer/random_normal/mul vgg_16/cls_score/weights/Initializer/random_normal vgg_16/cls_score/weights vgg_16/cls_score/weights/Assign vgg_16/cls_score/weights/read vgg_16_3/cls_score/kernel/Regularizer/l2_regularizer/scale vgg_16_3/cls_score/kernel/Regularizer/l2_regularizer/L2Loss vgg_16_3/cls_score/kernel/Regularizer/l2_regularizer vgg_16/cls_score/biases/Initializer/Const vgg_16/cls_score/biases vgg_16/cls_score/biases/Assign vgg_16/cls_score/biases/read vgg_16_3/cls_score/MatMul vgg_16_3/cls_score/BiasAdd vgg_16_3/cls_prob vgg_16_3/cls_pred/dimension vgg_16_3/cls_pred vgg_16/bbox_pred/weights/Initializer/random_normal/shape vgg_16/bbox_pred/weights/Initializer/random_normal/mean vgg_16/bbox_pred/weights/Initializer/random_normal/stddev vgg_16/bbox_pred/weights/Initializer/random_normal/RandomStandardNormal vgg_16/bbox_pred/weights/Initializer/random_normal/mul vgg_16/bbox_pred/weights/Initializer/random_normal vgg_16/bbox_pred/weights vgg_16/bbox_pred/weights/Assign vgg_16/bbox_pred/weights/read vgg_16_3/bbox_pred/kernel/Regularizer/l2_regularizer/scale vgg_16_3/bbox_pred/kernel/Regularizer/l2_regularizer/L2Loss vgg_16_3/bbox_pred/kernel/Regularizer/l2_regularizer vgg_16/bbox_pred/biases/Initializer/Const vgg_16/bbox_pred/biases vgg_16/bbox_pred/biases/Assign vgg_16/bbox_pred/biases/read vgg_16_3/bbox_pred/MatMul vgg_16_3/bbox_pred/BiasAdd

I guess the node vgg_16_3/cls_prob and some others like this, I generate .pb file using this output node name, But when I restore this .pb file and feed the image to that graph using below code:

`
sess = tf.Session()

with gfile.FastGFile(pb_file_path, 'rb') as f:
    graph_def = tf.GraphDef()
    graph_def.ParseFromString(f.read())
    sess.graph.as_default()
    tf.import_graph_def(graph_def, name='')

sess.run(tf.global_variables_initializer())

image = sess.graph.get_tensor_by_name('Placeholder:0')
image_info = sess.graph.get_tensor_by_name('Placeholder_1:0')
gt = sess.graph.get_tensor_by_name("Placeholder_2:0")

score = sess.graph.get_tensor_by_name('SCORE/vgg_16_3/cls_prob/cls_prob/scores:0')
bbox = sess.graph.get_tensor_by_name('SCORE/vgg_16_3/bbox_pred/BiasAdd/bbox_pred/scores:0')

rand_array = np.random.rand(1024, 5)

x_c = tf.constant(rand_array, dtype=tf.float32)
_, scores, bbox_pred, rois = sess.run([score,bbox],  feed_dict={image: blobs["data"], image_info: blobs["im_info"],gt: x_c})

`

There are some errors below:

File "/home/chenxingli/anaconda3/envs/python2/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 948, in _run raise TypeError('The value of a feed cannot be a tf.Tensor object. ' TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, numpy ndarrays, or TensorHandles.

please help me with this error, I have tried my best to do this.
Thank you so much!

Activity

wei61457

wei61457 commented on Nov 7, 2018

@wei61457

你是在知乎上也提过这个的问题吗? 请问最后是怎么解决的

Chase2816

Chase2816 commented on Jun 4, 2019

@Chase2816

这个问题解决了吗?我现在遇到的是这个错误ValueError: callback pyfunc_0 is not found

lily0101

lily0101 commented on Jul 23, 2019

@lily0101
Author

I solved this problem by using the demo.py file to generate the .pb file. In demo.py , it uses the .ckpt file to test result, you can add follwing code to convert .ckpt to .pb.
graph = tf.get_default_graph() input_graph_def = graph.as_graph_def() output_graph = "frozen_model.pb" output_node_names = "vgg16_3/cls_prob,vgg_16_3/bbox_pred/BiasAdd,vgg_16_1/rois/concat,vgg_16_3/cls_score/BiasAdd" output_graph_def = graph_util.convert_variables_to_constants(sess,input_graph_def,output_node_names.split(",")) with tf.gfile.GFile(output_graph,"wb") as f: f.write(output_graph_def.SerializeToString())

BTW you need to find the nodes name you need, and in my code, i reuse the .pb file to test whether or not it is right, and it will show more box in one object, so I add following code to correct it:

stds = np.tile(np.array(cfg.TRAIN.BBOX_NORMALIZE_STDS),(2)) means - np.tile(np.array(cfg.TRAIN.BBOX_NORMALIZE_MEANS),(2)) bbox_pred *= stds bbox_pred += means
that's my solution.

Chase2816

Chase2816 commented on Nov 15, 2019

@Chase2816

非常感谢您的问题,通过输出节点,成功生成了pb文件,但是在sess传参的时候运行了五分钟,我分配了动态内存管理,没有作用,请问您遇见了吗?运行的警告如下:
@@@@@@@@@@@@@@@@@@@@start_time
2019-11-15 14:51:20.998786: W tensorflow/core/framework/allocator.cc:124] Allocation of 411041792 exceeds 10% of system memory.
2019-11-15 14:52:40.981364: W tensorflow/core/framework/allocator.cc:124] Allocation of 411041792 exceeds 10% of system memory.
2019-11-15 14:52:41.303845: W tensorflow/core/framework/allocator.cc:124] Allocation of 411041792 exceeds 10% of system memory.
2019-11-15 14:52:44.509332: W tensorflow/core/framework/allocator.cc:124] Allocation of 411041792 exceeds 10% of system memory.
2019-11-15 14:52:46.302226: W tensorflow/core/framework/allocator.cc:124] Allocation of 411041792 exceeds 10% of system memory.
2019-11-15 14:52:54.346989: W .\tensorflow/core/grappler/optimizers/graph_optimizer_stage.h:241] Failed to run optimizer ArithmeticOptimizer, stage RemoveStackStridedSliceSameAxis node vgg_16_1/rois/strided_slice_12. Error: Pack node (vgg_16_1/rois/stack) axis attribute is out of bounds: 1
2019-11-15 14:52:54.347390: W .\tensorflow/core/grappler/optimizers/graph_optimizer_stage.h:241] Failed to run optimizer ArithmeticOptimizer, stage RemoveStackStridedSliceSameAxis node vgg_16_1/rois/strided_slice_14. Error: Pack node (vgg_16_1/rois/stack) axis attribute is out of bounds: 1
2019-11-15 14:52:54.347785: W .\tensorflow/core/grappler/optimizers/graph_optimizer_stage.h:241] Failed to run optimizer ArithmeticOptimizer, stage RemoveStackStridedSliceSameAxis node vgg_16_1/rois/strided_slice_16. Error: Pack node (vgg_16_1/rois/stack) axis attribute is out of bounds: 1
2019-11-15 14:52:54.348243: W .\tensorflow/core/grappler/optimizers/graph_optimizer_stage.h:241] Failed to run optimizer ArithmeticOptimizer, stage RemoveStackStridedSliceSameAxis node vgg_16_1/rois/strided_slice_18. Error: Pack node (vgg_16_1/rois/stack) axis attribute is out of bounds: 1
2019-11-15 14:55:13.729777: W .\tensorflow/core/grappler/optimizers/graph_optimizer_stage.h:241] Failed to run optimizer ArithmeticOptimizer, stage RemoveStackStridedSliceSameAxis node vgg_16_1/rois/strided_slice_12. Error: Pack node (vgg_16_1/rois/stack) axis attribute is out of bounds: 1
2019-11-15 14:55:14.138125: W .\tensorflow/core/grappler/optimizers/graph_optimizer_stage.h:241] Failed to run optimizer ArithmeticOptimizer, stage RemoveStackStridedSliceSameAxis node vgg_16_1/rois/strided_slice_14. Error: Pack node (vgg_16_1/rois/stack) axis attribute is out of bounds: 1
2019-11-15 14:55:14.138541: W .\tensorflow/core/grappler/optimizers/graph_optimizer_stage.h:241] Failed to run optimizer ArithmeticOptimizer, stage RemoveStackStridedSliceSameAxis node vgg_16_1/rois/strided_slice_16. Error: Pack node (vgg_16_1/rois/stack) axis attribute is out of bounds: 1
2019-11-15 14:55:14.198133: W .\tensorflow/core/grappler/optimizers/graph_optimizer_stage.h:241] Failed to run optimizer ArithmeticOptimizer, stage RemoveStackStridedSliceSameAxis node vgg_16_1/rois/strided_slice_18. Error: Pack node (vgg_16_1/rois/stack) axis attribute is out of bounds: 1
2019-11-15 14:56:02.263001: I tensorflow/stream_executor/dso_loader.cc:152] successfully opened CUDA library cublas64_100.dll locally
2019-11-15 14:56:20.213774: E tensorflow/stream_executor/cuda/cuda_driver.cc:806] failed to allocate 3.11G (3335344384 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2019-11-15 14:56:20.214025: W tensorflow/core/common_runtime/bfc_allocator.cc:211] Allocator (GPU_0_bfc) ran out of memory trying to allocate 3.09GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory were available.
2019-11-15 14:56:20.215159: E tensorflow/stream_executor/cuda/cuda_driver.cc:806] failed to allocate 3.11G (3335344384 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2019-11-15 14:56:20.215407: W tensorflow/core/common_runtime/bfc_allocator.cc:211] Allocator (GPU_0_bfc) ran out of memory trying to allocate 3.09GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory were available.
2019-11-15 14:56:20.525097: E tensorflow/stream_executor/cuda/cuda_driver.cc:806] failed to allocate 3.11G (3335344384 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2019-11-15 14:56:20.525345: W tensorflow/core/common_runtime/bfc_allocator.cc:211] Allocator (GPU_0_bfc) ran out of memory trying to allocate 2.10GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory were available.
2019-11-15 14:56:20.525889: E tensorflow/stream_executor/cuda/cuda_driver.cc:806] failed to allocate 3.11G (3335344384 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2019-11-15 14:56:20.526181: W tensorflow/core/common_runtime/bfc_allocator.cc:211] Allocator (GPU_0_bfc) ran out of memory trying to allocate 2.10GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory were available.
@@@@@@@@@@@@@@@ end_time:307.0676922798157

gfyulx

gfyulx commented on Jan 13, 2020

@gfyulx

这个问题解决了吗?我现在遇到的是这个错误ValueError: callback pyfunc_0 is not found

碰到了同样的问题,重新编译了.so文件仍没有解决,想问下你后面是怎么解决了这个问题?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @gfyulx@wei61457@lily0101@Chase2816

        Issue actions

          How to freeze the model? · Issue #340 · endernewton/tf-faster-rcnn