fchollet / deep-learning-with-python-notebooks

Jupyter notebooks for the code samples of the book "Deep Learning with Python"
MIT License
18.17k stars 8.53k forks source link

[ 8.4-generating-images-with-vaes ]Duplicate node name in graph: 'lambda_1/random_normal/shape #130

Open iamyihwa opened 4 years ago

iamyihwa commented 4 years ago

Hello I am getting an error when I add this line

z = layers.Lambda(sampling)([z_mean, z_log_var])

I get an error that says: 'ValueError: Duplicate node name in graph: 'lambda_1/random_normal/shape''

Any ideas? Detailed error below:

InvalidArgumentError Traceback (most recent call last) /home/cdsw/.local/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs) 1618 try: -> 1619 c_op = c_api.TF_FinishOperation(op_desc) 1620 except errors.InvalidArgumentError as e:

InvalidArgumentError: Duplicate node name in graph: 'lambda_1/random_normal/shape'

During handling of the above exception, another exception occurred:

ValueError Traceback (most recent call last)

in () 5 return z_mean + K.exp(z_log_var) * epsilon 6 ----> 7 z = layers.Lambda(sampling)([z_mean, z_log_var]) /home/cdsw/.local/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py in symbolic_fn_wrapper(*args, **kwargs) 73 if _SYMBOLIC_SCOPE.value: 74 with get_graph().as_default(): ---> 75 return func(*args, **kwargs) 76 else: 77 return func(*args, **kwargs) /home/cdsw/.local/lib/python3.6/site-packages/keras/engine/base_layer.py in __call__(self, inputs, **kwargs) 504 if all([s is not None 505 for s in to_list(input_shape)]): --> 506 output_shape = self.compute_output_shape(input_shape) 507 else: 508 if isinstance(input_shape, list): /home/cdsw/.local/lib/python3.6/site-packages/keras/layers/core.py in compute_output_shape(self, input_shape) 672 xs = [K.placeholder(shape=shape, dtype=dtype) 673 for shape, dtype in zip(input_shape, self._input_dtypes)] --> 674 x = self.call(xs) 675 else: 676 x = K.placeholder(shape=input_shape, dtype=self._input_dtypes) /home/cdsw/.local/lib/python3.6/site-packages/keras/layers/core.py in call(self, inputs, mask) 714 else: 715 self._input_dtypes = K.dtype(inputs) --> 716 return self.function(inputs, **arguments) 717 718 def compute_mask(self, inputs, mask=None): in sampling(args) 2 z_mean, z_log_var = args 3 epsilon = K.random_normal(shape=(K.shape(z_mean)[0], latent_dim), ----> 4 mean=0., stddev=1.) 5 return z_mean + K.exp(z_log_var) * epsilon 6 /home/cdsw/.local/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py in random_normal(shape, mean, stddev, dtype, seed) 4327 with tf_ops.init_scope(): 4328 return tf_keras_backend.random_normal( -> 4329 shape, mean=mean, stddev=stddev, dtype=dtype, seed=seed) 4330 4331 /home/cdsw/.local/lib/python3.6/site-packages/tensorflow_core/python/keras/backend.py in random_normal(shape, mean, stddev, dtype, seed) 5600 seed = np.random.randint(10e6) 5601 return random_ops.random_normal( -> 5602 shape, mean=mean, stddev=stddev, dtype=dtype, seed=seed) 5603 5604 /home/cdsw/.local/lib/python3.6/site-packages/tensorflow_core/python/ops/random_ops.py in random_normal(shape, mean, stddev, dtype, seed, name) 67 """ 68 with ops.name_scope(name, "random_normal", [shape, mean, stddev]) as name: ---> 69 shape_tensor = tensor_util.shape_tensor(shape) 70 mean_tensor = ops.convert_to_tensor(mean, dtype=dtype, name="mean") 71 stddev_tensor = ops.convert_to_tensor(stddev, dtype=dtype, name="stddev") /home/cdsw/.local/lib/python3.6/site-packages/tensorflow_core/python/framework/tensor_util.py in shape_tensor(shape) 992 # not convertible to Tensors becasue of mixed content. 993 shape = tuple(map(tensor_shape.dimension_value, shape)) --> 994 return ops.convert_to_tensor(shape, dtype=dtype, name="shape") 995 996 /home/cdsw/.local/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py in convert_to_tensor(value, dtype, name, as_ref, preferred_dtype, dtype_hint, ctx, accepted_result_types) 1312 1313 if ret is None: -> 1314 ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref) 1315 1316 if ret is NotImplemented: /home/cdsw/.local/lib/python3.6/site-packages/tensorflow_core/python/ops/array_ops.py in _autopacking_conversion_function(v, dtype, name, as_ref) 1366 elif dtype != inferred_dtype: 1367 v = nest.map_structure(_cast_nested_seqs_to_dtype(dtype), v) -> 1368 return _autopacking_helper(v, dtype, name or "packed") 1369 1370 /home/cdsw/.local/lib/python3.6/site-packages/tensorflow_core/python/ops/array_ops.py in _autopacking_helper(list_or_tuple, dtype, name) 1302 elems_as_tensors.append( 1303 constant_op.constant(elem, dtype=dtype, name=str(i))) -> 1304 return gen_array_ops.pack(elems_as_tensors, name=scope) 1305 else: 1306 return converted_elems /home/cdsw/.local/lib/python3.6/site-packages/tensorflow_core/python/ops/gen_array_ops.py in pack(values, axis, name) 5702 axis = _execute.make_int(axis, "axis") 5703 _, _, _op, _outputs = _op_def_library._apply_op_helper( -> 5704 "Pack", values=values, axis=axis, name=name) 5705 _result = _outputs[:] 5706 if _execute.must_record_gradient(): /home/cdsw/.local/lib/python3.6/site-packages/tensorflow_core/python/framework/op_def_library.py in _apply_op_helper(op_type_name, name, **keywords) 740 op = g._create_op_internal(op_type_name, inputs, dtypes=None, 741 name=scope, input_types=input_types, --> 742 attrs=attr_protos, op_def=op_def) 743 744 # `outputs` is returned as a separate return value so that the output /home/cdsw/.local/lib/python3.6/site-packages/tensorflow_core/python/framework/func_graph.py in _create_op_internal(self, op_type, inputs, dtypes, input_types, name, attrs, op_def, compute_device) 593 return super(FuncGraph, self)._create_op_internal( # pylint: disable=protected-access 594 op_type, inputs, dtypes, input_types, name, attrs, op_def, --> 595 compute_device) 596 597 def capture(self, tensor, name=None, shape=None): /home/cdsw/.local/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py in _create_op_internal(self, op_type, inputs, dtypes, input_types, name, attrs, op_def, compute_device) 3320 input_types=input_types, 3321 original_op=self._default_original_op, -> 3322 op_def=op_def) 3323 self._create_op_helper(ret, compute_device=compute_device) 3324 return ret /home/cdsw/.local/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py in __init__(self, node_def, g, inputs, output_types, control_inputs, input_types, original_op, op_def) 1784 op_def, inputs, node_def.attr) 1785 self._c_op = _create_c_op(self._graph, node_def, grouped_inputs, -> 1786 control_input_ops) 1787 name = compat.as_str(node_def.name) 1788 # pylint: enable=protected-access /home/cdsw/.local/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs) 1620 except errors.InvalidArgumentError as e: 1621 # Convert to ValueError for backwards compatibility. -> 1622 raise ValueError(str(e)) 1623 1624 return c_op ValueError: Duplicate node name in graph: 'lambda_1/random_normal/shape'
leemiller commented 4 years ago

If you are using TensorFlow 2.x, change any imports that are keras to tensorflow.keras. For example, from keras.models import model_from_json becomes from tensorflow.keras.models import model_from_json