singa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "YEUNG SAI HO (JIRA)" <j...@apache.org>
Subject [jira] [Created] (SINGA-478) Python 3 uses __itruediv__ instead of __idiv__
Date Thu, 08 Aug 2019 09:20:00 GMT
YEUNG SAI HO created SINGA-478:
----------------------------------

             Summary: Python 3 uses __itruediv__ instead of __idiv__
                 Key: SINGA-478
                 URL: https://issues.apache.org/jira/browse/SINGA-478
             Project: Singa
          Issue Type: Improvement
          Components: Core
            Reporter: YEUNG SAI HO


We need to add  __itruediv__ in tensor.py because the original __idiv__ is not supported
by python 3 anymore.

 

To understand the problem, let's study the following code first:
{code:java}
from singa import tensor
from singa import device
import numpy as np

Y = np.ones(shape=[10],dtype=np.float32) * 10.0
y = tensor.from_numpy(Y)
y.to_device(device.get_default_device())

def divide(y):
   y /= 10

divide(y)
print(tensor.to_numpy(y))
{code}
 Without adding the {color:#333333}__itruediv__{color} function, the result is as follows,
which means that the /= operation is not in place: 
{code:java}
[10. 10. 10. 10. 10. 10. 10. 10. 10. 10.]
{code}
After adding the __itruediv__ function, the result is as follows, which means that the /=
operation is in place:
{code:java}
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
{code}
This is because the {color:#333333}__idiv__ operation is for python 2, while __itruediv__
is for python 3. Therefore, if we do not add the __itruediv__ operator in tensor.py, it just
uses a default operation which is not in place.{color}

 

 



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Mime
View raw message