/// <summary> /// Use the <see cref="RowWise"/> operation directly and internally without any optimisation fallbacks. /// </summary> /// <param name="array">The array.</param> /// <param name="internalArray">The array as an internal array handle.</param> /// <param name="function">The function to apply row-wise.</param> /// <returns></returns> protected virtual INDArray _RowWiseDirect(INDArray array, TNDArray internalArray, Func <INDArray, INDArray> function) { INDArray[] rows = SliceRowWise(array, internalArray); for (int i = 0; i < rows.Length; i++) { rows[i] = function.Invoke(rows[i]); } DNDArray[] internalRowHandles = new DNDArray[rows.Length]; for (int i = 0; i < rows.Length; i++) { internalRowHandles[i] = InternaliseArray(rows[i]).Handle; } return(CreateArrayFromHandle(new DNDArray(DNDArray.OfRows(internalRowHandles, DiffsharpBackendHandle)))); }
/// <inheritdoc /> public INDArray StackRows(int numberRows, INDArray row) { TNDArray internalArray = InternaliseArray(row); return(CreateArrayFromHandle(DNDArray.OfRows(numberRows, internalArray.Handle, _diffsharpBackendHandle))); }