AI-MXNet
view release on metacpan or search on metacpan
lib/AI/MXNet/NDArray.pm view on Meta::CPAN
method T()
{
if (@{$self->shape} > 2)
{
confess('Only 2D matrix is allowed to be transposed');
}
return __PACKAGE__->transpose($self);
}
=head2 astype
Returns copied ndarray of current array with the specified type.
Parameters
----------
$dtype : Dtype
Returns
-------
$array : ndarray
A copy of the array content.
=cut
method astype(Dtype $dtype)
{
my $res = __PACKAGE__->empty($self->shape, ctx => $self->context, dtype => $dtype);
$self->copyto($res);
return $res;
}
=head2 as_in_context
Returns an NDArray in the target context.
If the array is already in that context, self is returned. Otherwise, a copy is
made.
Parameters
----------
context : AI::MXNet::Context
The target context we want the return value to live in.
Returns
-------
A copy or self as an NDArray in the target context.
=cut
method as_in_context(AI::MXNet::Context $context)
{
return $self if $self->context == $context;
return $self->copyto($context);
}
=head2 onehot_encode
One hot encoding indices into matrix out.
Parameters
----------
indices: NDArray
An NDArray containing indices of the categorical features.
out: NDArray
The result of the encoding.
Returns
-------
$out: NDArray
=cut
method onehot_encode(AI::MXNet::NDArray $indices, AI::MXNet::NDArray $out)
{
return __PACKAGE__->_onehot_encode($indices, $out, { out => $out });
}
=head2 _ufunc_helper(lhs, rhs, fn_array, lfn_scalar, rfn_scalar):
Helper function for element-wise operation
The function will perform numpy-like broadcasting if needed and call different functions
Parameters
----------
lhs : NDArray or numeric value
left hand side operand
rhs : NDArray or numeric value
right hand side operand
fn_array : function
function to be called if both lhs and rhs are of NDArray type
lfn_scalar : function
function to be called if lhs is NDArray while rhs is numeric value
rfn_scalar : function
function to be called if lhs is numeric value while rhs is NDArray;
if none is provided, then the function is commutative, so rfn_scalar is equal to lfn_scalar
Returns
-------
out: NDArray
result array
=cut
sub _ufunc_helper
{
my ($lhs, $rhs, $fn_array, $lfn_scalar, $rfn_scalar, $reverse) = @_;
($rhs, $lhs) = ($lhs, $rhs) if $reverse and $rfn_scalar;
if(not ref $lhs)
{
if(not $rfn_scalar)
{
return __PACKAGE__->can($lfn_scalar)->(__PACKAGE__, $rhs, $lhs);
}
else
{
return __PACKAGE__->can($rfn_scalar)->(__PACKAGE__, $rhs, $lhs);
}
}
elsif(not ref $rhs)
{
( run in 0.585 second using v1.01-cache-2.11-cpan-39bf76dae61 )