lfengad opened a new pull request #5042: [TF][Relay] TensorFlow Frontend 
support with shared params
URL: https://github.com/apache/incubator-tvm/pull/5042
 
 
   We observe that in lots of tensorflow models used in our production 
environment, some operators share the same node as their attributes. For 
example, there might be two "tf.reduce_mean" operators each with its own "axis" 
attribute. Their "axis" attributes can take the same "tf.constant" node. In 
this case, different operators share the same node as attributes. 
   
   However, in the current tensorflow frontend of relay, such sharing of the 
same param among different operators is not supported. For example, in the 
current implementation of "_get_param" function in 
"python/tvm/relay/frontend/tensorflow.py", the corresponding param will be 
deleted permanently using "pop" from the "_params" dictionary after being 
checked in "_get_param" function. In this case, if another operator needs to 
check the same param as its attribute, that param will not be found. Hence, the 
current implementation of the tensorflow frontend cannot support param sharing 
among different operators.   
   
   In order to support the case of param sharing among operators, we modify the 
tensorflow frontend. We leverage on the python decorator method. Everytime 
"_get_param" is called, instead of deleting the corresponding visited param as 
in the current implementation, we record it into a "used_params" dictionary and 
keep it in the original "_params" dictionary, so that another operator can 
still visit it in the following process. Then after the whole relay graph 
completes building, we delete the params have been visited in "used_params" 
from "_params" to generate the final "_params" output.
   
   Compared to the old implementation ,our new implementation doesn't delete 
the visited params immediately in "_get_param", but records them and deletes 
them at the final step. In this way, the case where different operators share 
the same param can be supported.  
    
   Any suggestions are welcome! @tqchen @FrozenGene

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to