@@ -170,7 +170,10 @@ def __eq__(self, other):
170170 if type (self ) != type (other ):
171171 return False
172172
173- return self ._unique_name == other ._unique_name and self ._in_idx == other ._in_idx
173+ return (
174+ self ._unique_name .lower () == other ._unique_name .lower ()
175+ and self ._in_idx == other ._in_idx
176+ )
174177
175178 def __hash__ (self ):
176179 return hash ((self ._unique_name , self ._in_idx ))
@@ -309,7 +312,7 @@ def __call__(self, *args, **kwargs):
309312 # Get the `OpDef`-instantiating parameters and call them a "node_def".
310313 node_attr = {a .name : apply_arguments .get (a .name , a ) for a in self .obj .attr }
311314
312- op_name = op_kwargs .get ("name" , self .obj .name . lower () )
315+ op_name = op_kwargs .get ("name" , self .obj .name )
313316
314317 # input_arg_names = [(getattr(a, 'name', None), i.name)
315318 # for a, i in zip(args, self.obj.input_arg)]
@@ -453,7 +456,7 @@ def __init__(self, op_def, node_def, inputs, name=None, outputs=None, obj=None):
453456
454457 if isinstance (name , (str , TFlowOpName )) or name is None :
455458 if name is None :
456- name = op_def .obj .name . lower ()
459+ name = op_def .obj .name
457460 # from tensorflow.python.framework import ops
458461 # if name and name[-1] == "/":
459462 # name = ops._name_from_scope_name(str(name))
@@ -512,7 +515,7 @@ def outputs(self):
512515 value_index = i ,
513516 shape = var (),
514517 name = (
515- TFlowOpName (f"{ self .name . lower () } :{ i } " )
518+ TFlowOpName (f"{ self .name } :{ i } " )
516519 if isinstance (self .name , (str , TFlowOpName ))
517520 else var ()
518521 ),
@@ -536,8 +539,6 @@ def default_output(self):
536539
537540 mt_outs = self .outputs
538541
539- if isvar (mt_outs ):
540- out_var = var ()
541542 if len (mt_outs ) == 1 :
542543 out_var = mt_outs [0 ]
543544 else :
@@ -553,8 +554,13 @@ def reify(self):
553554 # tt_op = self.op.reify()
554555 # if not self.is_meta(tt_op):
555556 op_inputs , op_inputs_unreified = _meta_reify_iter (self .inputs )
557+
558+ if isvar (self .node_def ):
559+ return self
560+
556561 op_attrs , op_attrs_unreified = _meta_reify_iter (self .node_def .attr )
557- if not op_inputs_unreified and not op_attrs_unreified and not MetaSymbol .is_meta (self .name ):
562+
563+ if not (op_inputs_unreified or op_attrs_unreified or MetaSymbol .is_meta (self .name )):
558564
559565 # We have to use a primitive string or TF will complain.
560566 name = self .name
@@ -644,22 +650,24 @@ def operator(self):
644650 def inputs (self ):
645651 """Return the tensor's inputs/rands.
646652
647- NOTE: These inputs differ from `self.op.inputs` in that contain
653+ NOTE: These inputs differ from `self.op.inputs` in that they contain
648654 the `node_def` parameters, as well.
649655 In other words, these can be used to recreate this object (per
650656 the meta object spec).
651657 """
652658 if self .op is not None and not isvar (self .op ):
653659 input_args = self .op .op_def .input_args (
654- * self .op .inputs , name = self .op .name , ** self .op .node_def .attr
660+ * self .op .inputs ,
661+ name = self .op .name if not isvar (self .op .name ) else None ,
662+ ** self .op .node_def .attr ,
655663 )
656664 return tuple (input_args .values ())
657665
658666 def reify (self ):
659667 if self .obj is not None and not isinstance (self .obj , Var ):
660668 return self .obj
661669
662- if not self .op :
670+ if ( not self .op ) or isvar ( self . op ) :
663671 op_res = super ().reify ()
664672 return op_res
665673
@@ -793,7 +801,7 @@ def __call__(self, x):
793801 @classmethod
794802 def find_opdef (cls , name ):
795803 """Attempt to create a meta `OpDef` for a given TF function/`Operation` name."""
796- raw_op_name = op_def_lib .lower_op_name_to_raw .get (name , name )
804+ raw_op_name = op_def_lib .lower_op_name_to_raw .get (name . lower () , name )
797805 op_def = op_def_registry .get_registered_ops ()[raw_op_name ]
798806
799807 if op_def is not None :
0 commit comments