@@ -82,15 +82,22 @@ public Tensor assign<T>(T value, bool use_locking = false, string name = null, b
8282 var value_tensor = ops . convert_to_tensor ( value , dtype : dtype ) ;
8383 var assign_op = gen_resource_variable_ops . assign_variable_op (
8484 handle , value_tensor , name : name ) ;
85+
8586 if ( read_value )
86- {
8787 return gen_resource_variable_ops . read_variable_op ( handle , dtype ) ;
88- // var variable = _lazy_read(assign_op, value_tensor);
89- // return variable;
90- }
88+
9189 return assign_op ;
9290 }
9391
92+ public IVariableV1 assign_lazy_load ( Tensor value , string name = null )
93+ {
94+ var value_tensor = ops . convert_to_tensor ( value , dtype : dtype ) ;
95+ var assign_op = gen_resource_variable_ops . assign_variable_op (
96+ handle , value_tensor , name : name ) ;
97+ var variable = _lazy_read ( assign_op , value_tensor ) ;
98+ return variable ;
99+ }
100+
94101 public Tensor value ( )
95102 => GraphElement ?? _read_variable_op ( ) ;
96103
@@ -157,6 +164,25 @@ public Tensor assign_add<T>(T delta, bool use_locking = false, string name = nul
157164 return assign_add_op ;
158165 }
159166
167+ public Tensor assign_sub < T > ( T delta , bool use_locking = false , string name = null , bool read_value = true )
168+ {
169+ var assign_sub_op = gen_resource_variable_ops . assign_sub_variable_op ( Handle ,
170+ ops . convert_to_tensor ( delta , dtype : dtype ) , name : name ) ;
171+
172+ if ( read_value )
173+ return gen_resource_variable_ops . read_variable_op ( handle , dtype ) ;
174+ // return _lazy_read(assign_add_op);
175+ return assign_sub_op ;
176+ }
177+
178+ public IVariableV1 assign_sub_lazy_load ( Tensor delta , string name = null )
179+ {
180+ var assign_sub_op = gen_resource_variable_ops . assign_sub_variable_op ( Handle ,
181+ ops . convert_to_tensor ( delta , dtype : dtype ) , name : name ) ;
182+
183+ return _lazy_read ( assign_sub_op , delta ) ;
184+ }
185+
160186 public override string ToString ( )
161187 {
162188 if ( tf . Context . executing_eagerly ( ) )
0 commit comments