NdArray

class nnabla.NdArray(*args, **kwargs)

nnabla.NdArray is a device-agnostic data container for multi-dimensional arrays (tensors). nnabla.NdArray can also implicitly handle data transfers across different devices (e.g. CPU to CUDA GPU, CUDA GPU to CPU). See Python API Tutorial for more details.

NdArray overrides some arithmetic operators (+, -, *, /, **). Operands can be either a scalar number, NdArray or Variable. An arithmetic operation containing NdArray returns NdArray which stores the output of the computation immediately invoked. Also, inplace arithmetic operations (+=, -=, *=, /=, **=) are implemented. Note that = doesn’t perform inplace substitution but just replaces the object reference. Instead, you can use copy_from() for inplace substitution.

Parameters

shape (tuple or int) – Shape of tuple.

cast(self, dtype, ctx=None)

In-place cast of data type of the NdArray. It returns the reference values as a numpy.ndarray only if optional parameter ctx is not given, None otherwise.

Parameters
Returns

numpy.array if ctx is None, otherwise nothing.

clear(self)

Clear memories which this NdArray has and return them to allocator.

clear_called

Checking if the array is not modified after cleared. This returns False until clear is called at the first time.

copy_from(self, NdArray arr, use_current_context=True)

Copy values from another NdArray object.

It returns the caller object itself.

Parameters
  • arr (NdArray) – Values will be copied to the caller object. The shape of arr` must be same as the caller object.

  • use_current_context (bool) – If True, a copy is happening in a device and dtype specified in the current context (equivalent to call F.identity(src, output=[self])). Otherwise, a device and dtype in the source array is used. The default is True.

Returns

nnabla.NdArray

data

Returns the values held by this array as a numpy.ndarray. Note that only the references are returned, and the values are not copied. Therefore, modifying the returned nnabla.NdArray will affect the data contained inside the NNabla array. This method can also be called as a setter where an array is created as the same type as rhs. There is an exception where zero() or fill(rhs) is invoked if a scalar with a float or an integer <= 2^53 (as filling value is maintained as float64) is given.

Note that this may implicitly invoke a data transfer from device arrays to the CPU.

Parameters

value (numpy.ndarray) –

Returns

numpy.ndarray

data_ptr(self, dtype, ctx=None)

Get array’s pointer.

The behavior is similar to cast method but returns the data pointer based on the ctx. If the ctx is not specified, the default context obtained by nn.get_current_context is used.

Parameters
Returns

The data pointer.

Return type

int

dtype

Get dtype.

Returns

numpy.dtype

fill(self, value)

Fill all of the elements with the provided scalar value.

Note

This doesn’t not fill values in an internal array with 0 immediately. An array is created as a requested data type when this array is used (in forward or backward computation for exampe), and is filled with the value.

Parameters

value (float) – The value filled with.

static from_numpy_array(nparr)

Create a NdArray object from Numpy array data.

The data is initialized with the given Numpy array.

Parameters

nparr (ndarray) – Numpy multi-dimensional array.

Returns

nnabla.NdArray

get_data(self, str mode='rw', dtype=None)

Returns the values held by this array as a numpy.ndarray with a specified mode.

Parameters
  • mode (str) – Computation becomes more efficient if right one is chosen. * ‘r’: Read-only access. * ‘w’: Write-only access. * ‘rw’: You can both read and write.

  • dtype (numpy.dtype, optional) – Force dtype of a returned array.

See :function:`nnabla.NdArray.data` for more details.

modification_count

Returns how many times modified after memory allocation or clearing buffer.

ndim

Number of dimensions.

Returns

int

shape

Shape of the N-d array.

Returns

tuple of int

size

Total size of the N-d array.

Returns

int

size_from_axis(self, axis=- 1)

Gets the size followed by the provided axis.

Example

a = nnabla.NdArray([10,9])
a.size_from_axis()
# ==> 90
a.size_from_axis(0)
# ==> 90
a.size_from_axis(1)
# ==> 9
a.size_from_axis(2)
# ==> 1
Parameters

axis (int, optional) – -1 as default

Returns

int

strides

Strides.

Returns

tuple of int

zero(self)

Fill all of the elements with 0.

Note

This doesn’t not fill values in an internal array with 0 immediately. An array is created as a requested data type when this array is used (in forward or backward computation for exampe), and is filled with 0.

zeroing

Checking if the array is not modified after calling zero().