Skip to content
This repository has been archived by the owner on Apr 10, 2024. It is now read-only.

issue in render own model #253

Open
Edw2n opened this issue Jun 15, 2020 · 7 comments
Open

issue in render own model #253

Edw2n opened this issue Jun 15, 2020 · 7 comments

Comments

@Edw2n
Copy link

Edw2n commented Jun 15, 2020

I'm trying to follow this link
[https://github.com/tensorflow/lucid/wiki/Importing-Models-into-Lucid]

And I have error in feature visualization of a layer with lucid
render.render_vis(model, "Conv2D_3:0")

What is the proper parameter in my case?

I checked my node name with this code

for node in model.graph_def.node:
      print(node.name)

And results are below.

Const
Variable
Variable_1
Variable_2
Variable_3
Variable_4
Variable_5
Variable_6
Variable_7
Variable_8
Variable_9
Variable_10
Variable_11
Conv2D_3
add_6
Relu_5
MaxPool_3
Conv2D_4
add_7
Relu_6
MaxPool_4
Conv2D_5
add_8
Relu_7
MaxPool_5
Reshape_1/shape
Reshape_1
MatMul_3
add_9
Relu_8
MatMul_4
add_10
Relu_9
MatMul_5
add_11
Softmax
lucid_metadata_json

Could you help me how can I solve this problem? :)

@colah
Copy link
Contributor

colah commented Jun 15, 2020

What error do you get when you call render?

@Edw2n
Copy link
Author

Edw2n commented Jun 15, 2020

@colah
The error message is as follows:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-36-5878bc10721e> in <module>()
      3 #_ = render.render_vis(model, obj)
      4 
----> 5 _ = render.render_vis(model,"Softmax:0")

6 frames
/usr/local/lib/python3.6/dist-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")

/usr/local/lib/python3.6/dist-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)

/usr/local/lib/python3.6/dist-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   T_ = model.import_graph(t_image, scope=scope, forget_xy_shape=True, input_map=input_map)
    258 
    259   def T(layer):

/usr/local/lib/python3.6/dist-packages/lucid/modelzoo/vision_base.py in import_graph(self, t_input, scope, forget_xy_shape, input_map)
    199       final_input_map.update(input_map)
    200     tf.import_graph_def(
--> 201         self.graph_def, final_input_map, name=scope)
    202     self.post_import(scope)
    203 

/tensorflow-1.15.2/python3.6/tensorflow_core/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(

/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/importer.py in import_graph_def(graph_def, input_map, return_elements, name, op_dict, producer_op_list)
    403       name=name,
    404       op_dict=op_dict,
--> 405       producer_op_list=producer_op_list)
    406 
    407 

/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/importer.py in _import_graph_def_internal(graph_def, input_map, return_elements, validate_colocation_constraints, name, op_dict, producer_op_list)
    533     raise ValueError(
    534         'Attempted to map inputs that were not found in graph_def: [%s]' %
--> 535         ', '.join(missing_unused_input_keys))
    536 
    537   if return_elements is None:

**ValueError: Attempted to map inputs that were not found in graph_def: [input:0]**

@colah
Copy link
Contributor

colah commented Jun 16, 2020

Attempted to map inputs that were not found in graph_def: [input:0]

When you exported your model, you had to declare what the name of the input node to your model was. It appears that you may have made an error when doing so, and that the name you gave doens't exist in the model.

@Edw2n
Copy link
Author

Edw2n commented Jun 16, 2020

@colah ,
Thanks to your answer, I solved the problem.
However, I have one more problem in rendering my model.

Here is my error message

---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/importer.py in _import_graph_def_internal(graph_def, input_map, return_elements, validate_colocation_constraints, name, op_dict, producer_op_list)
    500         results = c_api.TF_GraphImportGraphDefWithResults(
--> 501             graph._c_graph, serialized, options)  # pylint: disable=protected-access
    502         results = c_api_util.ScopedTFImportGraphDefResults(results)

InvalidArgumentError: Negative dimension size caused by subtracting 2 from 1 for 'import/max_pooling2d_1/MaxPool' (op: 'MaxPool') with input shapes: [1,32,?,1].

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
7 frames
/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/importer.py in _import_graph_def_internal(graph_def, input_map, return_elements, validate_colocation_constraints, name, op_dict, producer_op_list)
    503       except errors.InvalidArgumentError as e:
    504         # Convert to ValueError for backwards compatibility.
--> 505         raise ValueError(str(e))
    506 
    507     # Create _DefinedFunctions for any imported functions.

ValueError: Negative dimension size caused by subtracting 2 from 1 for 'import/max_pooling2d_1/MaxPool' (op: 'MaxPool') with input shapes: [1,32,?,1].

The link below is the colab notebook where the problem occurred.
https://colab.research.google.com/drive/1UPtYvjM_qurK1SwkfNa-4cekb07Nz93-?usp=sharing

And also, I attached another colab notebook about building own model, so please refer to it if necessary.
https://colab.research.google.com/drive/1CSRftnEDQiyXIlMwWrfWNgHQcdvUPCtH?usp=sharing

How can I solve this part?

@colah
Copy link
Contributor

colah commented Jun 16, 2020

When you run feature visualization, you optimize an image of size set by the argument param_f. Some models are incompatible with certain input sizes. Try doing something like:

render.render_vis(model, "conv2d_2/convolution:3", 
                               param_f=lambda: param.image(MODEL_INPUT_WIDTH))

@YangLiji
Copy link

YangLiji commented Aug 9, 2020

@colah ,
Thanks to your answer, I solved the problem.
However, I have one more problem in rendering my model.

Here is my error message

---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/importer.py in _import_graph_def_internal(graph_def, input_map, return_elements, validate_colocation_constraints, name, op_dict, producer_op_list)
    500         results = c_api.TF_GraphImportGraphDefWithResults(
--> 501             graph._c_graph, serialized, options)  # pylint: disable=protected-access
    502         results = c_api_util.ScopedTFImportGraphDefResults(results)

InvalidArgumentError: Negative dimension size caused by subtracting 2 from 1 for 'import/max_pooling2d_1/MaxPool' (op: 'MaxPool') with input shapes: [1,32,?,1].

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
7 frames
/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/importer.py in _import_graph_def_internal(graph_def, input_map, return_elements, validate_colocation_constraints, name, op_dict, producer_op_list)
    503       except errors.InvalidArgumentError as e:
    504         # Convert to ValueError for backwards compatibility.
--> 505         raise ValueError(str(e))
    506 
    507     # Create _DefinedFunctions for any imported functions.

ValueError: Negative dimension size caused by subtracting 2 from 1 for 'import/max_pooling2d_1/MaxPool' (op: 'MaxPool') with input shapes: [1,32,?,1].

The link below is the colab notebook where the problem occurred.
https://colab.research.google.com/drive/1UPtYvjM_qurK1SwkfNa-4cekb07Nz93-?usp=sharing

And also, I attached another colab notebook about building own model, so please refer to it if necessary.
https://colab.research.google.com/drive/1CSRftnEDQiyXIlMwWrfWNgHQcdvUPCtH?usp=sharing

How can I solve this part?

hello, have you solved this problem?

@YangLiji
Copy link

When you run feature visualization, you optimize an image of size set by the argument param_f. Some models are incompatible with certain input sizes. Try doing something like:

render.render_vis(model, "conv2d_2/convolution:3", 
                               param_f=lambda: param.image(MODEL_INPUT_WIDTH))

hello, I try this, but it doesn't work.

param_f = lambda: param.image(128)
_ = render.render_vis(model, "73/BiasAdd:2", param_f)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants