Open mencia opened 4 years ago
I save a tfhub model as explained in https://github.com/tensorflow/lucid/issues/218. According to https://github.com/tensorflow/lucid/wiki/Importing-Models-into-Lucid, once the model is saved, it can be visualized by:
model = Model.load("saved_model.pb") render.render_vis(model, "layer_name:0")
What should layer_name be? According to the last section of https://colab.research.google.com/drive/1PPzeZi5sBN2YRlBmKsdvZPbfYtZI-pHl#scrollTo=A1Vb01eu8r7_, it should be one of the nodes, which can be accessed by:
layer_name
for node in model.graph_def.node: print(node.name)
and in my case these are:
module/encoder/e1/kernel module/encoder/e1/bias module/encoder/e2/kernel module/encoder/e2/bias module/encoder/e3/kernel module/encoder/e3/bias module/encoder/e4/kernel module/encoder/e4/bias module/encoder/e5/kernel module/encoder/e5/bias module/encoder/means/kernel module/encoder/means/bias module/encoder/log_var/kernel module/encoder/log_var/bias module/decoder/dense/kernel module/decoder/dense/bias module/decoder/dense_1/kernel module/decoder/dense_1/bias module/decoder/conv2d_transpose/kernel module/decoder/conv2d_transpose/bias module/decoder/conv2d_transpose_1/kernel module/decoder/conv2d_transpose_1/bias module/decoder/conv2d_transpose_2/kernel module/decoder/conv2d_transpose_2/bias module/decoder/conv2d_transpose_3/kernel module/decoder/conv2d_transpose_3/bias checkpoint_initializer/prefix checkpoint_initializer/tensor_names checkpoint_initializer/shape_and_slices checkpoint_initializer AssignVariableOp checkpoint_initializer_1/prefix checkpoint_initializer_1/tensor_names checkpoint_initializer_1/shape_and_slices checkpoint_initializer_1 AssignVariableOp_1 checkpoint_initializer_2/prefix checkpoint_initializer_2/tensor_names checkpoint_initializer_2/shape_and_slices checkpoint_initializer_2 AssignVariableOp_2 checkpoint_initializer_3/prefix checkpoint_initializer_3/tensor_names checkpoint_initializer_3/shape_and_slices checkpoint_initializer_3 AssignVariableOp_3 checkpoint_initializer_4/prefix checkpoint_initializer_4/tensor_names checkpoint_initializer_4/shape_and_slices checkpoint_initializer_4 AssignVariableOp_4 checkpoint_initializer_5/prefix checkpoint_initializer_5/tensor_names checkpoint_initializer_5/shape_and_slices checkpoint_initializer_5 AssignVariableOp_5 checkpoint_initializer_6/prefix checkpoint_initializer_6/tensor_names checkpoint_initializer_6/shape_and_slices checkpoint_initializer_6 AssignVariableOp_6 checkpoint_initializer_7/prefix checkpoint_initializer_7/tensor_names checkpoint_initializer_7/shape_and_slices checkpoint_initializer_7 AssignVariableOp_7 checkpoint_initializer_8/prefix checkpoint_initializer_8/tensor_names checkpoint_initializer_8/shape_and_slices checkpoint_initializer_8 AssignVariableOp_8 checkpoint_initializer_9/prefix checkpoint_initializer_9/tensor_names checkpoint_initializer_9/shape_and_slices checkpoint_initializer_9 AssignVariableOp_9 checkpoint_initializer_10/prefix checkpoint_initializer_10/tensor_names checkpoint_initializer_10/shape_and_slices checkpoint_initializer_10 AssignVariableOp_10 checkpoint_initializer_11/prefix checkpoint_initializer_11/tensor_names checkpoint_initializer_11/shape_and_slices checkpoint_initializer_11 AssignVariableOp_11 checkpoint_initializer_12/prefix checkpoint_initializer_12/tensor_names checkpoint_initializer_12/shape_and_slices checkpoint_initializer_12 AssignVariableOp_12 checkpoint_initializer_13/prefix checkpoint_initializer_13/tensor_names checkpoint_initializer_13/shape_and_slices checkpoint_initializer_13 AssignVariableOp_13 checkpoint_initializer_14/prefix checkpoint_initializer_14/tensor_names checkpoint_initializer_14/shape_and_slices checkpoint_initializer_14 AssignVariableOp_14 checkpoint_initializer_15/prefix checkpoint_initializer_15/tensor_names checkpoint_initializer_15/shape_and_slices checkpoint_initializer_15 AssignVariableOp_15 checkpoint_initializer_16/prefix checkpoint_initializer_16/tensor_names checkpoint_initializer_16/shape_and_slices checkpoint_initializer_16 AssignVariableOp_16 checkpoint_initializer_17/prefix checkpoint_initializer_17/tensor_names checkpoint_initializer_17/shape_and_slices checkpoint_initializer_17 AssignVariableOp_17 checkpoint_initializer_18/prefix checkpoint_initializer_18/tensor_names checkpoint_initializer_18/shape_and_slices checkpoint_initializer_18 AssignVariableOp_18 checkpoint_initializer_19/prefix checkpoint_initializer_19/tensor_names checkpoint_initializer_19/shape_and_slices checkpoint_initializer_19 AssignVariableOp_19 checkpoint_initializer_20/prefix checkpoint_initializer_20/tensor_names checkpoint_initializer_20/shape_and_slices checkpoint_initializer_20 AssignVariableOp_20 checkpoint_initializer_21/prefix checkpoint_initializer_21/tensor_names checkpoint_initializer_21/shape_and_slices checkpoint_initializer_21 AssignVariableOp_21 checkpoint_initializer_22/prefix checkpoint_initializer_22/tensor_names checkpoint_initializer_22/shape_and_slices checkpoint_initializer_22 AssignVariableOp_22 checkpoint_initializer_23/prefix checkpoint_initializer_23/tensor_names checkpoint_initializer_23/shape_and_slices checkpoint_initializer_23 AssignVariableOp_23 checkpoint_initializer_24/prefix checkpoint_initializer_24/tensor_names checkpoint_initializer_24/shape_and_slices checkpoint_initializer_24 AssignVariableOp_24 checkpoint_initializer_25/prefix checkpoint_initializer_25/tensor_names checkpoint_initializer_25/shape_and_slices checkpoint_initializer_25 AssignVariableOp_25 init lucid_metadata_json
When I try to visualize some part:
import lucid.optvis.render as render _ = render.render_vis(model, "module/encoder/e5/kernel:0")
I get the following errors:
--------------------------------------------------------------------------- InvalidArgumentError Traceback (most recent call last) ~/Internship/Projects/Disentanglement_Locatello/env_py36/lib/python3.6/site-packages/tensorflow/python/framework/importer.py in import_graph_def(graph_def, input_map, return_elements, name, op_dict, producer_op_list) 426 results = c_api.TF_GraphImportGraphDefWithResults( --> 427 graph._c_graph, serialized, options) # pylint: disable=protected-access 428 results = c_api_util.ScopedTFImportGraphDefResults(results) InvalidArgumentError: Input 0 of node import/AssignVariableOp was passed float from import/module/decoder/conv2d_transpose/bias:0 incompatible with expected resource. During handling of the above exception, another exception occurred: ValueError Traceback (most recent call last) <ipython-input-66-4a76f238a346> in <module> 1 import lucid.optvis.render as render ----> 2 _ = render.render_vis(model, "module/encoder/e5/kernel:0") ~/Internship/Projects/Disentanglement_Locatello/env_py36/lib/python3.6/site-packages/lucid/optvis/render.py in render_vis(model, objective_f, param_f, optimizer, transforms, thresholds, print_objectives, verbose, relu_gradient_override, use_fixed_seed) 93 94 T = make_vis_T(model, objective_f, param_f, optimizer, transforms, ---> 95 relu_gradient_override) 96 print_objective_func = make_print_objective_func(print_objectives, T) 97 loss, vis_op, t_image = T("loss"), T("vis_op"), T("input") ~/Internship/Projects/Disentanglement_Locatello/env_py36/lib/python3.6/site-packages/lucid/optvis/render.py in make_vis_T(model, objective_f, param_f, optimizer, transforms, relu_gradient_override) 175 with gradient_override_map({'Relu': redirected_relu_grad, 176 'Relu6': redirected_relu6_grad}): --> 177 T = import_model(model, transform_f(t_image), t_image) 178 else: 179 T = import_model(model, transform_f(t_image), t_image) ~/Internship/Projects/Disentanglement_Locatello/env_py36/lib/python3.6/site-packages/lucid/optvis/render.py in import_model(model, t_image, t_image_raw, scope, input_map) 255 t_image_raw = t_image 256 --> 257 model.import_graph(t_image, scope=scope, forget_xy_shape=True, input_map=input_map) 258 259 def T(layer): ~/Internship/Projects/Disentanglement_Locatello/env_py36/lib/python3.6/site-packages/lucid/modelzoo/vision_base.py in import_graph(self, t_input, scope, forget_xy_shape, input_map) 198 final_input_map.update(input_map) 199 tf.import_graph_def( --> 200 self.graph_def, final_input_map, name=scope) 201 self.post_import(scope) 202 ~/Internship/Projects/Disentanglement_Locatello/env_py36/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py in new_func(*args, **kwargs) 505 'in a future version' if date is None else ('after %s' % date), 506 instructions) --> 507 return func(*args, **kwargs) 508 509 doc = _add_deprecated_arg_notice_to_docstring( ~/Internship/Projects/Disentanglement_Locatello/env_py36/lib/python3.6/site-packages/tensorflow/python/framework/importer.py in import_graph_def(graph_def, input_map, return_elements, name, op_dict, producer_op_list) 429 except errors.InvalidArgumentError as e: 430 # Convert to ValueError for backwards compatibility. --> 431 raise ValueError(str(e)) 432 433 # Create _DefinedFunctions for any imported functions. ValueError: Input 0 of node import/AssignVariableOp was passed float from import/module/decoder/conv2d_transpose/bias:0 incompatible with expected resource.
The problem is to do with the model.import_graph call, inside the import_model method in render.py.
model.import_graph
import_model
render.py
The same ValueError has been discussed in https://devtalk.nvidia.com/default/topic/1050006/tensorrt/incompatible-with-expected-resource/.
ValueError
Any ideas on how to overcome this?
I save a tfhub model as explained in https://github.com/tensorflow/lucid/issues/218. According to https://github.com/tensorflow/lucid/wiki/Importing-Models-into-Lucid, once the model is saved, it can be visualized by:
What should
layer_name
be? According to the last section of https://colab.research.google.com/drive/1PPzeZi5sBN2YRlBmKsdvZPbfYtZI-pHl#scrollTo=A1Vb01eu8r7_, it should be one of the nodes, which can be accessed by:and in my case these are:
When I try to visualize some part:
I get the following errors:
The problem is to do with the
model.import_graph
call, inside theimport_model
method inrender.py
.The same
ValueError
has been discussed in https://devtalk.nvidia.com/default/topic/1050006/tensorrt/incompatible-with-expected-resource/.Any ideas on how to overcome this?