Skip to content
This repository has been archived by the owner on Nov 17, 2023. It is now read-only.

New set default dtype #18251

Merged
merged 9 commits into from
May 19, 2020
Merged

New set default dtype #18251

merged 9 commits into from
May 19, 2020

Conversation

JiangZhaoh
Copy link
Contributor

Description

#17283 cause an issue #18193. So I depart dtype flag from npx.set_np() in this pull request.
And also try to fix #18060 .

Checklist

Essentials

Please feel free to remove inapplicable items for your PR.

  • The PR title starts with [MXNET-$JIRA_ID], where $JIRA_ID refers to the relevant JIRA issue created (except PRs with tiny changes)
  • Changes are complete (i.e. I finished coding on this PR)
  • All changes have test coverage:
  • Unit tests are added for small changes to verify correctness (e.g. adding a new operator)
  • Nightly tests are added for complicated/long-running ones (e.g. changing distributed kvstore)
  • Build tests will be added for build configuration changes (e.g. adding a new build option with NCCL)
  • Code is well-documented:
  • For user-facing API changes, API doc string has been updated.
  • For new C++ functions in header files, their functionalities and arguments are documented.
  • For new examples, README.md is added to explain the what the example does, the source of the dataset, expected performance on test set and reference to the original paper if applicable
  • Check the API doc at https://mxnet-ci-doc.s3-accelerate.dualstack.amazonaws.com/PR-$PR_ID/$BUILD_ID/index.html
  • To the best of my knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

Changes

  • Feature1, tests, (and when applicable, API doc)
  • Feature2, tests, (and when applicable, API doc)

Comments

  • If this change is a backward incompatible change, why must this change be made.
  • Interesting edge cases to note here

@mxnet-bot
Copy link

Hey @JiangZhaoh , Thanks for submitting the PR
All tests are already queued to run once. If tests fail, you can trigger one or more tests again with the following commands:

  • To trigger all jobs: @mxnet-bot run ci [all]
  • To trigger specific jobs: @mxnet-bot run ci [job1, job2]

CI supported jobs: [unix-cpu, website, windows-cpu, windows-gpu, edge, centos-cpu, sanity, unix-gpu, clang, centos-gpu, miscellaneous]


Note:
Only following 3 categories can trigger CI :PR Author, MXNet Committer, Jenkins Admin.
All CI tests must pass before the PR can be merged.

@JiangZhaoh
Copy link
Contributor Author

@mxnet-bot run ci [windows-cpu]

@mxnet-bot
Copy link

Jenkins CI successfully triggered : [windows-cpu]

@JiangZhaoh
Copy link
Contributor Author

@mxnet-bot run ci [unix-gpu]

@mxnet-bot
Copy link

Jenkins CI successfully triggered : [unix-gpu]

@JiangZhaoh
Copy link
Contributor Author

@mxnet-bot run ci [unix-cpu]

@mxnet-bot
Copy link

Jenkins CI successfully triggered : [unix-cpu]

@JiangZhaoh
Copy link
Contributor Author

@mxnet-bot run ci [unix-gpu]

@mxnet-bot
Copy link

Jenkins CI successfully triggered : [unix-gpu]

Copy link
Member

@yzhliu yzhliu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sxjscience could you also take a look?

python/mxnet/ndarray/numpy/random.py Outdated Show resolved Hide resolved
python/mxnet/util.py Outdated Show resolved Hide resolved
python/mxnet/util.py Outdated Show resolved Hide resolved
python/mxnet/util.py Outdated Show resolved Hide resolved
@@ -216,7 +217,7 @@ MXNET_REGISTER_API("_npi.arange")
param.repeat = 1;
param.infer_range = false;
if (args[3].type_code() == kNull) {
param.dtype = mshadow::kFloat32;
param.dtype = mxnet::common::GetDefaultDtype();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just realized that in numpy, the default dtype of arange is int64.

import numpy as np
print(np.arange(10).dtype)
import mxnet as mx
mx.npx.set_np()
print(mx.np.arange(10).dtype)

Output:

int64
float32

Thus, we should change the dtype to be consistent with the official numpy. What do you think @yzhliu @leezu

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just realized that in numpy, the default dtype of arange is int64.

import numpy as np
print(np.arange(10).dtype)
import mxnet as mx
mx.npx.set_np()
print(mx.np.arange(10).dtype)

Output:

int64
float32

Thus, we should change the dtype to be consistent with the official numpy. What do you think @yzhliu @leezu

I think maybe we could consider the most common use cases to decide which return result to choose.

Copy link
Member

@sxjscience sxjscience May 17, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In fact, arange is usually used for constructing the index. Sometimes, the user may use np.arange(0, 1000*1000*1000, 10000) and we will lose precision if we use float32. In addition, pytorch uses int64.

import torch as th

print(th.arange(10).dtype)
# torch.int64

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The example @sxjscience listed looks reasonable to me. I guess we should do int64 then.

@yzhliu
Copy link
Member

yzhliu commented May 18, 2020

otherwise good to me.

@JiangZhaoh
Copy link
Contributor Author

@mxnet-bot run ci [centos-cpu, miscellaneous, unix-cpu]

@mxnet-bot
Copy link

Jenkins CI successfully triggered : [unix-cpu, centos-cpu, miscellaneous]

@JiangZhaoh
Copy link
Contributor Author

@mxnet-bot run ci [centos-cpu]

@mxnet-bot
Copy link

Jenkins CI successfully triggered : [centos-cpu]

@yzhliu yzhliu merged commit b904d48 into apache:master May 19, 2020
@yzhliu
Copy link
Member

yzhliu commented May 19, 2020

Thanks @JiangZhaoh @sxjscience

AntiZpvoh pushed a commit to AntiZpvoh/incubator-mxnet that referenced this pull request Jul 6, 2020
* apply apache#17283

* fix issue apache#18060

* fix error

* remove redundant code

* fix CI error

* replace Flase to False

* add 'dtype=False' to set_np()

* fix doc

* default 'arange' default np dtype as int64
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Numpy] Dense does not support float32 + float64.
4 participants