This error probably come from using the updates parameter of theano.function().
In it, you probably tell Theano that you want the new value of a shared variable will be of dtype float64, while the original value is float32. Adam comment is responsible most of the type for this type of problems. You can use the Theano flag warn_float64=pdb to find where the upcast happen in your code. Fred On Tue, Apr 18, 2017 at 3:50 AM Adam Becker <[email protected]> wrote: > I encountered something similar a few days ago. Turned out float32 divided > by int32 gave float64. This is consistent with numpy behavior, a bit weird, > but true. No sure if related. > > In general, traversing the graph (prior to compilation) to find the > problematic nodes can be helpful. > > > On Sunday, April 16, 2017 at 10:44:49 PM UTC+8, Justin Wilson wrote: >> >> I've set THEANO_FLAGS such that floatX=float32 and type casted to float32 >> throughout the code. Is there a way to set allow_convert = True so that can >> convert from float64 to float32 for Variable Elemwise{add,no_inplace}.0). >> I'm new to group and first post so let me know if any additional info would >> be helpful. >> >> >> ---------------------------------------------------------------------------TypeError >> Traceback (most recent call >> last)/home/wilson/anaconda3/lib/python3.5/site-packages/theano/compile/pfunc.py >> in rebuild_collect_shared(outputs, inputs, replace, updates, >> rebuild_strict, copy_inputs_over, no_default_updates) 192 >> update_val = store_into.type.filter_variable(update_val,--> 193 >> allow_convert=False) 194 >> except TypeError: >> /home/wilson/anaconda3/lib/python3.5/site-packages/theano/tensor/type.py in >> filter_variable(self, other, allow_convert) 234 >> other=other,--> 235 self=self)) 236 >> TypeError: Cannot convert Type TensorType(float64, matrix) (of Variable >> Elemwise{add,no_inplace}.0) into Type TensorType(float32, matrix). You can >> try to manually convert Elemwise{add,no_inplace}.0 into a >> TensorType(float32, matrix). >> >> During handling of the above exception, another exception occurred: >> TypeError Traceback (most recent call >> last)<ipython-input-137-40e9aa6eac9d> in <module>() 78 79 t = >> time()---> 80 train_g = theano.function([X, Z], cost, updates=g_updates) >> 81 train_d = theano.function([X, Z], cost, updates=d_updates) 82 gen = >> theano.function([Z], gX) >> /home/wilson/anaconda3/lib/python3.5/site-packages/theano/compile/function.py >> in function(inputs, outputs, mode, updates, givens, no_default_updates, >> accept_inplace, name, rebuild_strict, allow_input_downcast, profile, >> on_unused_input) 324 on_unused_input=on_unused_input, >> 325 profile=profile,--> 326 >> output_keys=output_keys) 327 # We need to add the flag check_aliased >> inputs if we have any mutable or 328 # borrowed used defined inputs >> /home/wilson/anaconda3/lib/python3.5/site-packages/theano/compile/pfunc.py >> in pfunc(params, outputs, mode, updates, givens, no_default_updates, >> accept_inplace, name, rebuild_strict, allow_input_downcast, profile, >> on_unused_input, output_keys) 447 >> rebuild_strict=rebuild_strict, 448 >> copy_inputs_over=True,--> 449 >> no_default_updates=no_default_updates) 450 # extracting the arguments >> 451 input_variables, cloned_extended_outputs, other_stuff = >> output_vars >> /home/wilson/anaconda3/lib/python3.5/site-packages/theano/compile/pfunc.py >> in rebuild_collect_shared(outputs, inputs, replace, updates, rebuild_strict, >> copy_inputs_over, no_default_updates) 206 ' >> function to remove broadcastable dimensions.') 207 --> 208 >> raise TypeError(err_msg, err_sug) 209 assert update_val.type == >> store_into.type 210 >> TypeError: ('An update must have the same type as the original shared >> variable (shared_var=<TensorType(float32, matrix)>, >> shared_var.type=TensorType(float32, matrix), >> update_val=Elemwise{add,no_inplace}.0, update_val.type=TensorType(float64, >> matrix)).', 'If the difference is related to the broadcast pattern, you can >> call the tensor.unbroadcast(var, axis_to_unbroadcast[, ...]) function to >> remove broadcastable dimensions.') >> >> -- > > --- > You received this message because you are subscribed to the Google Groups > "theano-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- --- You received this message because you are subscribed to the Google Groups "theano-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
