singa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (SINGA-478) Python 3 uses __itruediv__ instead of __idiv__
Date Fri, 09 Aug 2019 09:34:00 GMT

    [ https://issues.apache.org/jira/browse/SINGA-478?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16903749#comment-16903749
] 

ASF subversion and git services commented on SINGA-478:
-------------------------------------------------------

Commit 802674000b7ba05d7e1a085e74789976061910d8 in incubator-singa's branch refs/heads/master
from chrishkchris
[ https://gitbox.apache.org/repos/asf?p=incubator-singa.git;h=8026740 ]

SINGA-478 Change __idiv__ to __itruediv__ for py3

> 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
>            Priority: Major
>          Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> 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