Code Monkey home page Code Monkey logo

mxnet.sharp's Issues

Cannot convert arrays to ndarray

When I try to convert any array to ndarray I get this error:

System.ArgumentException: 'Object contains non-primitive or non-blittable data.'

and I get the error in the new NDArray

var ctx = mx.Cpu();
float[][] labels= training_labels.ToArray(); // [1000][1]
var train_y1 = new NDArray(labels, new Shape(labels.Count(), 1), ctx: ctx, DType.Float16);

Is there a way to convert List of array of floats to NDArray ?

Thanks!

nd.Array Yielding Unexpected Results

I am trying to create an NDArray by using nd.Array(), however if I pass in Int32 values for the array, it is giving me unexpected results.

For example, if I create:
var ndArray = nd.Array(new int[] {0, 0, 15, 15})

It creates the NDArray with DType = float32, when I am expecting DType = int32
The underlying ArrayData for the object becomes {0, 0, 2.101948E-44, 2.101948E-44}, when it should be {0, 0, 15, 15}

Additionally, calling nd.Array() and passing in the array as a NumpyDotNet NDArray also creates unexpected results. In this case, it appears to be creating the NDArray as it does in the first scenario, then casting to int32, which results in ArrayData being {0, 0, 0, 0}

I believe if nd.Array() used NativeMethods.MXNDArrayCreateEx() instead of NativeMethods.MXNDArrayCreate(), the DType could be determined from the passed in array and passed to the function to set the NDArray properly.

Img.ImDecode() does not load NDArray properly

First, I just want to say thank you @deepakkumar1984 for all of your work on this project. This project has been excellent in allowing me to do work in computer vision using the .NET framework.

I am attempting to load an image from memory into an NDArray using Img.Decode(). However, nd.Cvimdecode() creates an Operator by passing the buffer byte array in as a parameter:

        return new Operator("_cvimdecode")
            .SetParam("buf", buf)
            .SetParam("flag", flag)
            .SetParam("to_rgb", to_rgb)
            .Invoke();

I believe the buffer should be passed in as an input NDArray, replacing .SetParam("buf", buf) with .SetInput("buf", new NDArray(buf))

MxNet CUDA 11

Hi,
Do you plan to make a version for mxnet 1.8 ? which supports CUDA 11, because this version does not work on NVidia RTX 3060

Thanks!

Finish the C# version of Keras project which got the MxNet backend

Keras project is part of MxNet.Sharp which is a high-level neural networks API, been developed in C#. Keras-MXNet is capable of running on top of high performance, scalable Apache MXNet deep learning engine.

Use Keras-MXNet if you need a deep learning library that:

Allows for easy and fast prototyping (through user friendliness, modularity, and extensibility).
Supports both convolutional networks and recurrent networks, as well as combinations of the two.
Runs seamlessly on CPU, one GPU and multi-GPU.

Project: https://github.com/tech-quantum/MxNet.Sharp/tree/master/src/MxNet.Keras

Implement line by line python code and convert to C#. Project structure is already create with all the skeleton methods. Need to implement the methods by looking at python code:

Python Version: https://github.com/awslabs/keras-apache-mxnet/tree/keras-mxnet-2.2.4

Slice Support For More Than Two Dimensions

When working with NDArrays that have more than two dimensions, there doesn't seem to be a way to slice the NDArray to either get or set data.

For example, when working with images using three channels, say with shape (250,250,3), I will try and do this:
img[":,:,1"]
the shape should be (250,250,1), but instead I get (250,250,3), returning all channels instead of the one that I want.

It looks like attempting to grab/setting the slice using the string format calls MxUtil.GetSliceNotation, which returns only the row and column beginning and ending indices. If MxUtil.GetSliceNotation could be updated to allow returning n-dimensions' beginning and ending indices, then it seems like more than two dimensional NDArrays could be sliced.

Update nuget package

Hello!

Is it possible to release an updated version of the nuget package for MxNet.Sharp? Thank you!

Add Ability To Load Model Parameters From Memory

I need to be able to store symbol and parameter files into a database and then load them into a model after retrieving them from the database. Currently, I can store the symbol file as a JSON string and load it using Symbol.LoadJSON(), however I cannot do this with the .params file.

Could we add the ability to load the parameter file from a buffer? I was able to do this by using MXNDArrayLoadFromBuffer(). This works just like MXNDArrayLoad(), but instead of loading from a file it will load from the in-memory bytes.

libmxnet

Hi,
I see that you are working hard, every day the files are updated.

I have tried to compile the entire master source with the regression example and I am getting this error

Unhandled exception. System.DllNotFoundException: Unable to load DLL 'libmxnet' or one of its dependencies: The specified module could not be found. (0x8007007E)
   at MxNet.Interop.NativeMethods.MXNDArrayCreate64(Int32[] shape, Int32 ndim, DeviceType devType, Int32 devId, Int32 delayAlloc, Int32 dtype, IntPtr& out)

Where can I get the libmxnet ?

Publish Linux packages

Hi,

Many thanks for your great work. Iโ€™m working with Linux and would greatly appreciate if you could publish the Linux packages.

Many thanks in advance

Error when calling Module.Bind() when using MxNet-CU101.Runtime.Redist

In trying to utilize GPUs, I have grabbed the MxNet-CU101.Runtime.Redist package, which uses mxnet-cu101 v1.5.0.

I have written some code to try and load an existing model and bind parameters to it:

    mModel = New Module(sym, context:new [] {Context.Gpu(0)}, label_names:null, data_names:new [] {"data"})
    mModel.Bind(new [] {New IO.DataDesc("data", New Shape(1, 3, 112, 112))}, for_training:False)
    mModel.SetParams(ndaArgParams, ndaAuxParams)

However, the call to mModel.Bind() produces the following exception:
System.ArgumentException: Can not pass IntPtr.Zero
Parameter name: h
at MxNet.Executor..ctor(IntPtr h, Context context, List1 gradReqs, Dictionary2 groupToCtx)
at MxNet.Symbol.SimpleBind(Context ctx, Dictionary2 grad_req, Dictionary2 type_dict, Dictionary2 stype_dict, Dictionary2 group2ctx, String[] shared_arg_names, Executor shared_exec, NDArrayDict shared_buffer, DataDesc[] kwargs)
at MxNet.Modules.DataParallelExecutorGroup.BindiThExec(Int32 i, DataDesc[] data_shapes, DataDesc[] label_shapes, DataParallelExecutorGroup shared_group)
at MxNet.Modules.DataParallelExecutorGroup.BindExec(DataDesc[] data_shapes, DataDesc[] label_shapes, DataParallelExecutorGroup shared_group, Boolean reshape)
at MxNet.Modules.DataParallelExecutorGroup..ctor(Symbol symbol, Context[] contexts, Int32[] workload, DataDesc[] data_shapes, DataDesc[] label_shapes, String[] param_names, Boolean for_training, Boolean inputs_need_grad, DataParallelExecutorGroup shared_group, String[] fixed_param_names, OpGradReq grad_req, String[] state_names, Dictionary`2[] group2ctxs)
at MxNet.Modules.Module.Bind(DataDesc[] data_shapes, DataDesc[] label_shapes, Boolean for_training, Boolean inputs_need_grad, Boolean force_rebind, Module shared_module, OpGradReq grad_req)

In the Symbol.SimpleBind() method, the call to NativeMethods.MXExecutorSimpleBindEx() does not return anything for exe_handle which caused the error. If I switch to using the CPU version of libmxnet, this function works properly with the exact same parameters passed in.

I was able to get this working properly with mxnet-cu101 v1.6.0b20191114. I tried getting v1.6.0, but it was giving me a really small libmxnet.dll and a bunch of really large mxnet_xx.dll files. If there was a way to get v1.6.0 of mxnet-cu101, I believe this would fix the issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.