for stuff like machine-learning, using web-assembly / asm.js on an existing 
c/c++ library is probably more practical than trying to roll your own in 
javascript.

here are some pre-compiled (in asm.js) binaries using fann you can download and 
run directly in nodejs:
https://github.com/kaizhu256/node-fann-lite/tree/examples/external/examples 
<https://github.com/kaizhu256/node-fann-lite/tree/examples/external/examples>
https://github.com/kaizhu256/node-fann-lite/blob/examples/external/examples/Makefile#L20
 
<https://github.com/kaizhu256/node-fann-lite/blob/examples/external/examples/Makefile#L20>

performance-wise, the asm-variants running in nodejs train about 4x slower than 
their native c-compiled counterparts

> On Jan 28, 2018, at 10:54 PM, Robert Eisele <rob...@xarg.org> wrote:
> 
> The capabilities of the language itself are growing with each version. It's 
> not that the first version of JavaScript would not be appropriate for today's 
> web applications, but since we identify regular patterns in a language, we 
> are able to add more layers of abstraction. But not only syntactic features 
> can be abstracted to describe what the programmer wants with as little code 
> as possible to give the engines more room for optimization, also the standard 
> library should get extended. And I mean, it gets extended quite a lot - so 
> tensors could be just one of these additions.
> The link of J Decker is a good starting reference 
> https://github.com/yiransheng/tensor-ops-js 
> <https://github.com/yiransheng/tensor-ops-js>
> It's not hard to use the features of JavaScript to implement a library like 
> this. The hard part is to make an API like this as fast as possible to meet 
> future demands for web applications. And this is the purpose of a standard 
> library: 1) Providing regular functionalities without the need of external 
> dependencies (e.g. libraries) and 2) Making them as fast and accurate as 
> possible on a given machine.
> 
> And I think all these points make tensors a good fit for Web Assembly.
> 
> Robert
> Am 28.01.18 um 15:08 schrieb Michał Wadas:
>> Why should be it included in standard library?
>> 
>> Are there widely used  libraries providing similar capabilities?
>> 
>> Why is it preferable to implementing tensor operations in Web Assembly? 
>> 
>> 
>> On 27 Jan 2018 2:50 am, "Robert Eisele" <rob...@xarg.org 
>> <mailto:rob...@xarg.org>> wrote:
>> Hello,
>> 
>> Allocating multi-dimensional arrays in Javascript is only possible by 
>> building each dimension individually. In addition to being a very tedious 
>> job, a developer has no control over memory usage, which in general is 
>> likely to be very high.
>> 
>> Seeing an array algebraically as a vector, typed arrays have already created 
>> the ability to work more efficiently and memory-consciously with lists of 
>> numbers. A natural extension of this is not just a matrix, but a tensor.
>> 
>> I would like to suggest tensors as a native language construct in ES. This 
>> would have the advantage that developers could write highly parallelizable 
>> code independently of WebGL. As an API one could introduce the following 
>> classes in analogy to typed arrays:
>> 
>> - IntXTensor
>> - UintXTensor
>> - FloatXTensor
>> 
>> Where X is one of {8, 16, 32, 64}. To make these tensor objects really 
>> effective, it is necessary to introduce meaningful operations, maybe similar 
>> to the features of TensorFlow. I think by introducing tensors in the browser 
>> (but also node.js), a wide range of new applications open up. For example, 
>> working with deep learning right in the browser or calculating filters on 
>> images without having to write shaders for them.
>> 
>> The most important thing probably is having a way of storing high 
>> dimensional data in the browser without worrying about the memory footprint, 
>> even for complex applications.
>> 
>> What do you think about it?
>> 
>> Robert Eisele
>> 
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss@mozilla.org <mailto:es-discuss@mozilla.org>
>> https://mail.mozilla.org/listinfo/es-discuss 
>> <https://mail.mozilla.org/listinfo/es-discuss>
>> 
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to