From c19c6b9fe62362674271623c73e3e3b7ee09d3f4 Mon Sep 17 00:00:00 2001 From: ziyuang Date: Wed, 17 Apr 2019 15:56:40 +0300 Subject: [PATCH 1/4] An empty NDArray should have size 0 --- cpp-package/include/mxnet-cpp/ndarray.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cpp-package/include/mxnet-cpp/ndarray.hpp b/cpp-package/include/mxnet-cpp/ndarray.hpp index b667542bffb5..af9c8cf0cf9d 100644 --- a/cpp-package/include/mxnet-cpp/ndarray.hpp +++ b/cpp-package/include/mxnet-cpp/ndarray.hpp @@ -391,8 +391,11 @@ inline mx_float NDArray::At(size_t c, size_t h, size_t w) const { } inline size_t NDArray::Size() const { + auto &shape = GetShape(); + if (shape.empty()) + return 0u; size_t ret = 1; - for (auto &i : GetShape()) ret *= i; + for (auto &i : shape) ret *= i; return ret; } From 3bbc50e867ff76177751767624c87635a878a8a8 Mon Sep 17 00:00:00 2001 From: ziyuang Date: Wed, 17 Apr 2019 17:01:25 +0300 Subject: [PATCH 2/4] use const lvalue reference --- cpp-package/include/mxnet-cpp/ndarray.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp-package/include/mxnet-cpp/ndarray.hpp b/cpp-package/include/mxnet-cpp/ndarray.hpp index af9c8cf0cf9d..d0903f22ca04 100644 --- a/cpp-package/include/mxnet-cpp/ndarray.hpp +++ b/cpp-package/include/mxnet-cpp/ndarray.hpp @@ -391,7 +391,7 @@ inline mx_float NDArray::At(size_t c, size_t h, size_t w) const { } inline size_t NDArray::Size() const { - auto &shape = GetShape(); + const auto &shape = GetShape(); if (shape.empty()) return 0u; size_t ret = 1; From a29b44a9b2d80476995b4c2f3c183b7dcd1f3526 Mon Sep 17 00:00:00 2001 From: ziyuang Date: Thu, 25 Apr 2019 13:35:52 +0300 Subject: [PATCH 3/4] check directly whether the NDArray is empty --- cpp-package/include/mxnet-cpp/ndarray.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cpp-package/include/mxnet-cpp/ndarray.hpp b/cpp-package/include/mxnet-cpp/ndarray.hpp index d0903f22ca04..320b54d78bca 100644 --- a/cpp-package/include/mxnet-cpp/ndarray.hpp +++ b/cpp-package/include/mxnet-cpp/ndarray.hpp @@ -34,6 +34,7 @@ #include "dmlc/logging.h" #include "mxnet-cpp/ndarray.h" #include "mxnet-cpp/operator.h" +#include "mxnet/ndarray.h" namespace mxnet { namespace cpp { @@ -391,8 +392,8 @@ inline mx_float NDArray::At(size_t c, size_t h, size_t w) const { } inline size_t NDArray::Size() const { - const auto &shape = GetShape(); - if (shape.empty()) + NDArrayHandle handle = GetHandle(); + if (static_cast(handle)->is_none()) return 0u; size_t ret = 1; for (auto &i : shape) ret *= i; From ea6526b09baf03d4095e848ac9e10de092065374 Mon Sep 17 00:00:00 2001 From: ziyuang Date: Thu, 25 Apr 2019 13:54:20 +0300 Subject: [PATCH 4/4] typo --- cpp-package/include/mxnet-cpp/ndarray.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp-package/include/mxnet-cpp/ndarray.hpp b/cpp-package/include/mxnet-cpp/ndarray.hpp index 320b54d78bca..b4022bae9431 100644 --- a/cpp-package/include/mxnet-cpp/ndarray.hpp +++ b/cpp-package/include/mxnet-cpp/ndarray.hpp @@ -396,7 +396,7 @@ inline size_t NDArray::Size() const { if (static_cast(handle)->is_none()) return 0u; size_t ret = 1; - for (auto &i : shape) ret *= i; + for (auto &i : GetShape()) ret *= i; return ret; }