New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Thin .NET/C# binding focusing on BrainScript and low-level I/O #1963

Open
vermorel opened this Issue Jun 4, 2017 · 1 comment

Comments

Projects
None yet
3 participants
@vermorel
Contributor

vermorel commented Jun 4, 2017

There is community interest for .NET support (#960) and C# binding (#1755). Rather than duplicating the bindings of Python, I would suggest a distinct approach that, I believe, would better fit the .NET ecosystem.

Indeed, BrainScript and cntk.exe (command-line) already provides all the features that can be expected from the .NET app angle. However, this approach suffer from one major limitation: training and evaluation data are expected to be moved around through a interop file (either text or binary).

More specifically, a wrapper that emphasizes:

  • BrainScript as a first-class citizen in .NET
  • Data I/O as a first-class for the boundary between .NET and CNTK

Making BrainScript a first-class citizen can be achieved by providing C# API that simply offers the possibility to compile a string as a BrainScript script, verifying the syntax correctness along the way. This would greatly facilitate the maintenance of the BrainScript scripts within a .NET app; those script would typically live as embedded resources, or direct string inclusion in C#.

Making data I/O a first-class citizen could be done by introducing stream-driven abstraction intended to move binary data back and from from and to CNTK without making assumption on where the data resides (ex: data can be hosted in the Blob Storage of Azure). In order to support the CNTK I/O capabilities, a simple Stream is not sufficient, and a more complex abstraction would be needed.

@cha-zhang

This comment has been minimized.

Show comment
Hide comment
@cha-zhang

cha-zhang Jul 13, 2017

Member

We are working on a C# binding for CNTK. We are also redesigning the reader to be more generic. Please follow our iteration plans for details. Thanks!

Member

cha-zhang commented Jul 13, 2017

We are working on a C# binding for CNTK. We are also redesigning the reader to be more generic. Please follow our iteration plans for details. Thanks!

@ebarsoumMS ebarsoumMS self-assigned this Jul 13, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment