因为 JavaScript 很棒
+1!
+1
:+1:
+1
正是我正在寻找的。 :+1:
引自官网http://www.tensorflow.org/
我们希望吸引您为自己喜欢的语言贡献 SWIG 接口——无论是 Go、Java、Lua、Javascript 还是 R。
我对整个 SWIG 事情都不熟悉,但四处搜索并找到了这个。 http://www.swig.org/Doc3.0/Javascript.html
不太确定这是如何工作的。 我们是否需要专门为 Javascript 编写 swig 接口文件,或者它是在运行某些命令时自动生成的,还是有人已经在做这个(这太棒了)?
+1:+1:
+1
+1
+1
+1
👍
:+1:
+1!
刚刚开始,但不熟悉编写 nodejs 插件。 查看 swig 接口文件,看看它们是否会有所帮助,或者我是否应该只使用 c++ API。
+1
+1
+1
+1
这是 TensorFlow 核心团队在不久的将来不太可能解决的问题,所以如果你想贡献它,请继续! 我建议尽早在讨论邮件列表上传播一个提议的实现,以便可以提前达成关于此类 API 可能存在的位置(在 repo / off repo / 'contrib' 目录中)的共识。
有人要编写 NodeJS 库吗? :+1:
我认为使用官方的 NodeJS API 会更好,但是在我看来,社区会更有趣(如果不是更多的话)。 我知道有多种方法可以解决这个问题,但是我强烈建议使用 node-gyp 来提高性能。 我很乐意尽我所能做出贡献,但是,这是我无法独自完成的事情。 如果其他一些人也感兴趣,特别是具有 C++ 知识的人,那将是最好的。
:+1:
@Foorack如果有人也感兴趣,我愿意贡献它。 是否可以将讨论转移到松弛频道? (见#31)
@tngan slack 频道是私有的,但是我可以通过 herokuapp 链接加入。 :+1:
我们希望有更多的开发者来讨论和贡献。 现在我们有一个名为 nodejs 的 slack 通道(参见 #31),并且保留了一个 Github 存储库node-tensorflow 。 谢谢@Foorack !
我愿意做出贡献。 感谢小伙伴们的主动!
@miguelalche很高兴看到您感兴趣! 请加入 slack 频道,有人会将您添加到存储库中。 ^^
我期待着做出贡献(特别是与#132 一起)!!
+1
节点万岁! 我们开工吧。
+1
+1
这是关于如何使用 C API 加载和执行 TensorFlow 图的文章: https :
该提案将在下周发布。 继续跟踪https://github.com/node-tensorflow/node-tensorflow。
+1
我已经发布了我的起点——https: //github.com/nikhilk/node-tensorflow ,稍后将发布到 npm。
@jimfleming - 就像你的方法一样(我们都在使用 ffi ......我这样做是为了快速入门)。 您是否打算构建更高级别的框架式 API 来复制 Python 体验? 那是我的下一步。
@nikhilk谢谢。 像new tf.Tensor()
而不是tf.NewTensor()
可能是一个不错的补充,但我目前不打算扩展它。 我只对加载在 python 中创建的图形感兴趣,我想我喜欢极简主义。
+1
该提案在此处发布,并附有当前进展。
https://github.com/node-tensorflow/node-tensorflow/tree/1.0.0
有一个开放的问题需要讨论。
https://github.com/node-tensorflow/node-tensorflow/issues/2
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
能够在基于 node.js 的服务器中轻松运行 tensorflow 网络会很棒。
+1
+1
+1
+1
+1
+1
我非常愿意做出贡献。 @Foorack请把我加到任何你能做的事情上! 我有一个真实的用例,所以同时开发和测试它会很棒!!
+1
+1
+1
+1:+1:
+1:+1:
我在这里使用 SWIG 有一个工作原型: https :
下一步是定义绑定最初覆盖的区域(必须在 C++ API 内)并开始为这些区域实现 SWIG 接口文件。
如果有人对 SWIG 有经验,我很乐意合作,因为似乎大量的 python SWIG 接口是自定义覆盖等,我很想不重现他们的工作。 此外,从 tensorflow 团队那里得到一些关于最初涵盖哪些 API 的清晰信息会很棒,因为我确信他们的路线图在路上有很多变化,我不想发生冲突。 (抄送@martinwicke ?)
+1
+1:+1:
+1
+1
+1
+1
+1
请尝试使用反应按钮 --> http://www.geekwire.com/2016/github-adds-reactions-keep-comments-track/不再有 +1 评论 xD
+1
:+1:
+1
+1
+1
@peterbraden抱歉长时间的沉默。 我们正在构建 C++ API,它会随着时间的推移而增长。 我希望最有用的部分是运行现有图形所需的部分。 C++ 图形构建 API 现在正在重做,因此花太多时间在它上面并不是特别有用。
如果您准备了 PR 将这些绑定放入 contrib/nodejs,我会很高兴。
@martinwicke感谢您的鼓励。 我在这里做了一个初步的尝试: https :
+10000
+1
+1
+1
+1
+1
这对于直接在 Web 客户端上使用的纯前端图形导出会很有趣。 即使从图中要求的所需输入/输出将在导出的 JS“sess.run”等效函数中进行硬编码。
+1
:+1:
+1
+1
+1
+1
+1
在查看绑定是否已经存在时发现了这一点。 在研究更多之前,将通过当前的 python API 学习一些张量流,但我之前已经为 C++ 库构建了 nodejs 绑定,并且可以从经验中告诉你 swig 是错误的方式。
如果您只是使用 swig 绑定,那么您将在异步环境中拥有同步阻塞代码。 swig 绑定不在 IO 线程上运行,根据我的理解/经验,它们在主事件循环上执行。
一旦我有了一些基本的张量流经验,我可能会对构建适当的绑定感兴趣。 因此,如果有人对此很认真和/或想要了解有关使用 v8 模块的更多详细信息,请告诉我。
是否有任何与张量流 API 的 node-gyp 绑定相关的链接?
@dmcmorris我非常有兴趣伸出援手! 您推荐使用哪些资源来使用 v8 模块? 我们可以在这里组建一个团队并尽快开始深入研究材料,因为这个项目已经过期了:)
+1
+1
+1
+1 秒
有更新吗??
2016 年 10 月 31 日下午 12:06,“willshion”通知@github.com 写道:
+1 秒
—
您收到此消息是因为您发表了评论。
直接回复本邮件,在GitHub上查看
https://github.com/tensorflow/tensorflow/issues/37#issuecomment -257222936,
或静音线程
https://github.com/notifications/unsubscribe-auth/ANrvwrbmShC9c0_wsNpTudKSCb0-8qt8ks5q5Yx3gaJpZM4Ge5NV
.
TensorFlow 周年快乐!
https://research.googleblog.com/2016/11/celebrating-tensorflows-first-year.html
我注意到 TensorFlow 现在可以从 Go、Rust 和 Haskell 访问。 为什么忽略 JavaScript?
真的在等待 JavaScript 中的机器库。
+1
+1
💯👍
+1
+1.0000000000000000000000001
+1
+1
+1
+1
我很期待看到官方的 Node.js API。但我认为有一些问题。
无论如何,JavaScript 很棒!
有人在做这方面的工作吗?
看起来非常困难。
+1
非常需要!
@stackOverMind。 对这些要点进行了一些搜索。 我没有尝试过任何这些,它们的使用/运行效率可能不高,但看起来有些东西可以潜在地解决这些问题。
+1
+1
+1 pweeettyyy pwease!!!
+1
+1
期待它。 👍
+1
期待它。 :+1:
👍
+1
+1。 我在 Node 方面有一些经验,我会看看这个。
+1
+1 等不及了,Python 很棒,Node 和 JS 也很棒
+1
+1 只是为了它
+1!
+1
+1 👍
+1
+1会很酷
+1 <3
👍
👍
+100
+1
+1
:+1:
+2
+1;)
标记
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
:+1:
+1
+1
+1
👍
请 !
+1
+1
OP 的日期是从 2015 年开始,现在是 2017 年,项目中的任何人都没有真正注意到它。 我想我可能只是得到提示,关于这个问题不会发生任何事情。
有谁知道是否有任何关于张量流和节点的健康讨论在其他任何地方,因为这些 +1 似乎没有做太多:(
+1
# +1
👍
+1
+1
:+1:
已经2年了,仍然没有运气?
好的。 他妈的 Javascript。
+1.0/0.0
受到deep_recommend_system 的启发,我现在正在尝试另一种方法,以便通过 tensorflow 服务使用 Node.js 访问模型。 这仍在进行中。
这可能很有用keras-js
@sarkistlt不幸的是,不,我们不是在谈论做 Tensorflow 的 javascript 实现, keras.js
是这样做的,但我们谈论的是在 Tensorflow 的 C++ api 周围有一个 nodejs包装器,所以它需要了解如何编写本机添加- 用于 NodeJs 。
其他有用的来源。
不幸的是,我的日常工作不是编码,它需要精通 C++,而我个人并不具备。
顺便说一句, keras.js
只做推理,没有训练,所以没有反向传播。
Google 开发人员在他们的操场上用 Javascript 实现了一小部分 Tensorflow,神经网络实现在这里并且包括反向传播。
我开始研究原生 nodejs Tensorflow 实现,如果有人加入会很棒
https://github.com/nodejs-tensorflow/nodejs-tensorflow
+1
+1
+1
+1
我很高兴听到您尝试@JIoJIaJIu。 解决这个问题的潜在影响是巨大的。 这是我们投票最多的问题。
粗略一看,到目前为止,您似乎在做正确的事情。 您在一个单独的项目中创建了它并使用了 TensorFlow C API,正如@martinwicke之前推荐的那样。
像 Vincent 几年前推荐的那样,通过与TensorFlow 邮件列表共享设计文档是吸引项目贡献者的一个好方法。 这样我们就可以围绕您的愿景达成共识,并帮助它成为可能的最佳愿景。
TensorFlow 团队希望 NodeJS 社区从 TensorFlow 中受益。 因此,我们绝对有兴趣帮助致力于实现这一目标的个人取得成功。
如果有人在听,这似乎是 Tensorflow 最需要的功能:
+1
大家好,我在没有 SWIG 的情况下为 Tensorflow 创建了 Node.js 桥接库:https://github.com/yorkie/tensorflow-nodejs,它支持“预定义图形运行”和非常简单的“图形构建”,我是还计划在未来支持更多的客户端功能:)
同时,我很乐意让这个被 Tensorflow 官方小组合并,这对我来说将是一个零成本的 PR :)
@yorkie看起来很有趣,我会试试的! 但是我们不能将 GPL 代码合并到 TensorFlow 中。
@yorkie看起来很棒,你想加入这个项目并联合起来吗?
@ry确定我可以肯定地更改许可证:)
@JIoJIaJIu我不知道现在移动这个 repo 的最佳位置是什么,如果这个 repo 不适合移动 tensorflow 组织,我认为 nodejs-tensorflow 是个好地方:)
但是我们不能将 GPL 代码合并到 TensorFlow 中。
@ry更新了 MIT 的许可, @JIoJIaJIu加入了群,感谢邀请 :)
+1
+1
+1
+1
+1
本月早些时候宣布了用于 TensorFlow 的 JavaScript API。 请参阅deeplearn.js主页上的详细信息。
我现在将关闭这个(广泛的)错误。 随意打开其他更具体的 FR。
deeplearn.js
用于带有 webgl 的浏览器,而不是用于 node.js 的 sdk
很公平。 我现在看到错误标题直接引用了 Node.js。
@vincentvanhoucke它甚至不是关于标题中的
首先——deeplearn.js 是一个库,它只在某种程度上反映了“TensorFlow API 的风格”并且纯粹在浏览器中运行,另一个将是整个 Tensorflow 优点的直接 API。 此外,它甚至远不及被称为 Tensorflow 的替代品……可能是针对业余爱好者的,但不适用于商业用途,因为人们需要机器集群来瞄准计算过程。 我认为它是一个演示,你可以用 JavaScript 和神经网络实现什么......对未来的体验...... ;-)
+1
+999
耶稣基督,停止向人们发送无用的通知,GitHub 引入 👍 和 👎 反应是有原因的。
+1 和 +999 只会惹恼人们,不会增加任何价值。
+1000
:+1:
+1
+1
😄 伙计们,请在评论 +1 或 + 任何之前 - 请看看@k1sul1的评论
耶稣基督,停止向人们发送无用的通知,GitHub 引入 👍 和 👎 反应是有原因的。 +1 和 +999 只会惹恼人们,不会增加任何价值。
@shahen94我们都看到了,但仍然......我们是 js 开发人员。
+1
@BruceHem不太确定如何成为 js 开发人员与盲目地将不必要的垃圾邮件推送到提要...😄
你们都知道“+1”只是让这个话题不可读? 我知道我们都希望支持这个案例,但只能推断在 github 上最接近“投票”功能的东西是通过“反应”实现的,而不是线程中的评论数......或者我错过了什么? ;-P
大声笑 :P 这个帖子几年前就死了。
.
+1 Googolplex!
+1
同意@thefill绝对“+1”只会让这个话题变得不可读,实际上我们有社区实现,那么如果有人想将 TensorFlow 与 Node.js 或 JavaScript 一起使用,请尝试上述一两个,我认为这可能在这里比评论投票更好。
至于我,我在https://github.com/yorkie/tensorflow-nodejs上工作,让它像 Python 一样具有足够的功能,而且它还有很长的时间去,但它基本上已经完全实现了官方language_bindings API . 这意味着您仍然可以使用 Python 来构建图形,但加载模型并在 Node.js 运行时中运行它。 除了 Python 之外的其他语言目前也可以做到这一点。
我还寻求@ry的帮助,使我的个人存储库得到正式支持,我们必须做的事情很少,例如构建一些示例模型,尤其是 RNN 案例,但不幸的是,我必须在其他领域工作并且有这几个月没时间了,如果有人有兴趣让这件事发生,请给我发电子邮件,我很乐意指导您如何开始。 让我们以最良好的祝愿为社区做一些有用的事情:)
关于当前已经启动的项目,特别是使用 C API 的挑战,我有一个对我来说效果很好的实现建议。
由于 python 仍然是围绕 Tensorflow API 的最健壮、开发人员友好且功能齐全的包装器,而不是尝试为 js“重新创建”python API,为什么不直接创建与 python API 的绑定? 这仍然需要首先创建一个节点 C++ 附加组件,但不是直接绑定到 C API,您可以使用“嵌入式”python 直接从 C++ 运行 python 方法。
这与其他 JS => Python 解决方案不同,这些解决方案建议简单地生成一个 Python 脚本......由于进程之间的大量数据传输成本(时间),该解决方案对于任何合理规模的学习问题都不可行。 但是,使用嵌入式 python,python 脚本/numpy 数组访问的内存直接指向 js Float32Array 缓冲区。
这个解决方案对我来说非常有效(尽管无可否认,让最初的 js => C++ => python 流工作有点痛苦)。 由于我有特定的需求,我没有完成绑定到每个单独的 Python TensorFlow 方法的任务,而只是将我的数据和超参数传递给构建大部分图的几个方法。 从我目前的起点来看,完整的个人绑定不会太糟糕。
我欢迎对上述方法的任何想法或建议。 谢谢。
@djimoh5关于 JavaScript 到 Python 全功能 API 的绝妙想法! 另一方面,我们还可以为 TensorFlow Python API 实现一个具有自省功能的 RPC 服务器,以便 JavaScript 和其他语言客户端可以访问实时 Python。 (我会在有空的时候做这个,啊哈)
但是这里有一些关于为什么要为 JavaScript 重新创建一些 Python 特性的事情,因为它们是用 JavaScript 编写的,它们对 JavaScript 开发人员更友好,并且开发人员很容易修改源代码以检查是否有可能出现不同的情况,而不是只是从上游获取提要:)
+1
我也对 nodejs tensorflow API 感兴趣,以便能够在节点红色流中使用它,该流将链接 tensorflows 图,并且可能是其他类型的数据分析节点。 我仍然对 tensorflow 了解不多。 这可能不是问的正确地方,但我想知道为什么其他开发人员会为 tensorflow 寻找 nodejs api/add-on ? 你的用例是什么?
@khelkun 的回答相当简单:提供成熟的 JavaScript 包,允许与 Tensorflow 轻松交互,开启了无数新的可能性。 JavaScript 在所有移动平台、所有主要桌面操作系统和所有浏览器上运行,因此可能性是无限的。
最大的好处肯定来自在 node.js 上运行的服务器端应用程序,这些应用程序可以直接与 Tensorflow 交互,而且 node-webkit(桌面应用程序)可能会产生许多有趣的项目。
这个帖子的社区组织者/管理员是否无法简单地删除那些故意用所有“+1”拖钓甚至禁止他们的人的帖子?大声笑
有没有人考虑过使用 WebAssembly (wasm) 进行这种集成? 你知道,这可能是解决这个问题的最优雅的解决方案,将所有 JS 与 Python 对话与 C++ 对话。 我真的不太了解 TensorFlow 的内部结构,但我相信 TensorFlow 的 C++ 部分可以编译为 wasm(检查支持的 MVP 功能,但虚幻引擎 4 编译为 wasm 的前身并在 FireFox 中成功运行)。 一旦将 C/C++ API 编译为 wasm,您只需要确保公开必要的 API。 wasm 将在 Node.js、所有主要浏览器中运行,甚至可以在任何浏览器之外运行,因为它是一个非常可移植的字节码。 这对我来说似乎是最好的道路。
相关资源/讨论:
+1...我们不再生活在信息时代的中世纪部分。 请支持 node.js。
为什么有人需要另一个 Javascript 库? 为什么有人会使用 JS 库来训练神经网络? Javascropt 是一种糟糕的设计语言。
@AyalaSaenzJorge哈哈(既然你在
对于那些比这个巨魔更认真的人,请查看https://deeplearnjs.org ... 它受 tensorflow 的影响并由 Google 提供支持 ... 也许与其从头开始,我们可以考虑将其移植到 Node.js
@somombo是的,看起来真的很有趣。 RE:tensorflow + deeplearnjs,见esp:
@AyalaSaenzJorge这是一个提供信息性评论的地方,而不是一个固执己见的人。
@somombo请看我 8 月 26 日的评论,我解释了为什么 deeplearnjs 与这场辩论无关。
好的,抱歉评论。
埃尔迪克。 2017 年 12 月 12 日下午 6:46,“Filip Dabrowski”通知@ github.com
备注:
@AyalaSaenzJorge https://github.com/ayalasaenzjorge这是一个
信息丰富的评论,而不是固执己见的点火器。
@somombo https://github.com/somombo请参阅我 8 月 26 日的评论
我在这里解释了为什么 deeplearnjs 与这场辩论无关。—
你收到这个是因为你被提到了。
直接回复本邮件,在GitHub上查看
https://github.com/tensorflow/tensorflow/issues/37#issuecomment-351232483 ,
或静音线程
https://github.com/notifications/unsubscribe-auth/AeZvKtru1EQjtRnoz6ZR36Kh-DTfVNozks5s_xBVgaJpZM4Ge5NV
.
+1
@cpple记住不要添加 +1,它们会引起噪音并被反应所取代。 试着给第一条评论竖起大拇指
只是想分享一个更新——修改了https://github.com/nikhilk/node-tensorflow并计划使用 TensorFlow 图(以及后来保存的模型)在 node.js 中进行预测/推理。 我想我会分享,因为很多人都对这个问题表示了兴趣。
我创建了一个用于 deeplearnjs 的 headless-gl 分支(它反过来与 tensorflow 一起使用)——这允许模型在来自 node.js 的 GPU 上本地运行(请注意,它目前仅在 OSX 上进行过测试)。
您可以在https://github.com/dfoody/headless-gl找到安装说明和基本示例
当然,还有https://deeplearnjs.org了解更多详细信息。
在 OSX 上安装的一般说明:
brew install pkg-config cairo pango libpng jpeg giflib
npm install deeplearn-gl
npm install deeplearn
还有一个快速示例来展示它是如何与 deeplearnjs 一起使用的:
var gl = require('deeplearn-gl')
var dl = require('deeplearn');
var math = new dl.NDArrayMath('webgl');
var size = 3000;
var start = Date.now();
var a = dl.Array2D.ones([size, size]);
var b = dl.Array2D.ones([size, size]);
var result = math.matMul(a, b);
var promise = result.data().then(function(data) {
console.log("done in ", (Date.now()-start)/1000, "seconds with value", data[0]);
}).catch(console.log);
@dfoody感谢您与社区分享这一点,但“这反过来适用于 tensorflow”的说法是不正确的。 Deeplearn.js 只是提供(引用自他们的网站)“镜像 TensorFlow API 的执行模型”——这就是它与 TF 项目的共同之处,恐怕;-(
另请参阅我 8 月 26 日的评论,其中解释了为什么 deeplearnjs 与这场辩论无关。
@nikhilk太棒了,继续前进! 我会密切关注你的项目;-D
+1
propelml.org - 看起来很有趣。 我没有使用过它,但它启用了 GPU 并在浏览器和节点上运行
@7ammer propelml.org 看起来很有前途。 感谢您与我们一起分享这一点 ;-)
因为 NodeJS 它很快! ;D
如果社区中有一个雄心勃勃的成员想要解决这个问题,并将其合并到 TensorFlow contrib 代码库中,这里有一些关于我将如何做的提示。 请注意,我不会这样做。
您可以像 TensorBoard 在js.bzl 中所做的那样将 Node 添加到workspace.bzl中。
请注意 TensorFlow 不能依赖rules_nodejs 。
load("@io_bazel_rules_closure//closure:defs.bzl", "filegroup_external")
filegroup_external(
name = "org_nodejs",
# MIT with portions licensed:
# - MIT
# - Old MIT
# - 2-Clause-BSD
# - 3-Clause-BSD
# - ISC
# - Unicode
# - zlib
# - Artistic 2.0
licenses = ["notice"],
sha256_urls_extract_macos = {
"910395e1e98fb351c62b5702a9deef22aaecf05d6df1d7edc283337542207f3f": [
"https://mirror.bazel.build/nodejs.org/dist/v6.9.1/node-v6.9.1-darwin-x64.tar.xz",
"http://nodejs.org/dist/v6.9.1/node-v6.9.1-darwin-x64.tar.xz",
],
},
sha256_urls_windows = {
"1914bfb950be8d576ce9e49c8a0e51c9f2402560fe3c19093e69bc1306a56e9e": [
"https://mirror.bazel.build/raw.githubusercontent.com/nodejs/node/v6.9.1/LICENSE",
"https://raw.githubusercontent.com/nodejs/node/v6.9.1/LICENSE",
],
"513923b0490ebb7466a56483a62595814ed9d036d6f35476debb0cd606bec526": [
"https://mirror.bazel.build/nodejs.org/dist/v6.9.1/win-x64/node.exe",
"http://nodejs.org/dist/v6.9.1/win-x64/node.exe",
],
"3951aefa4afd6fb836ab06468b1fc2a69fa75bd66ec2f5a0e08c4e32547681e3": [
"https://mirror.bazel.build/nodejs.org/dist/v6.9.1/win-x64/node.lib",
"http://nodejs.org/dist/v6.9.1/win-x64/node.lib",
],
},
sha256_urls_extract = {
"d4eb161e4715e11bbef816a6c577974271e2bddae9cf008744627676ff00036a": [
"https://mirror.bazel.build/nodejs.org/dist/v6.9.1/node-v6.9.1-linux-x64.tar.xz",
"http://nodejs.org/dist/v6.9.1/node-v6.9.1-linux-x64.tar.xz",
],
},
strip_prefix = {
"node-v6.9.1-darwin-x64.tar.xz": "node-v6.9.1-darwin-x64",
"node-v6.9.1-linux-x64.tar.xz": "node-v6.9.1-linux-x64",
},
executable = [
"node",
"node.exe",
],
default_visibility = ["//tensorflow/contrib/node:__subpackages__"],
)
现在假设你想要一个 Node 程序,例如tsc.js ,你想把它变成你可以bazel run //tensorflow/contrib/node:generate
。 您可以在 Bazel 中执行此操作的一种快速方法是在tensorflow/contrib/node/defs.bzl
定义一个宏:
def node_binary(name, srcs, data=None, visibility=None, testonly=None, **kwargs):
native.sh_binary(
name = name,
srcs = [name + ".sh"],
data = srcs + data + ["@org_nodejs"],
testonly = testonly,
visibility = visibility,
**kwargs
)
native.genrule(
name = name + "_sh",
srcs = [srcs[0]],
outs = [name + ".sh"],
cmd = "cat >$@ <<'EOF'\n" +
"#!/bin/bash\n" +
"NODE=external/org_nodejs/bin/node\n" +
"if [[ -e external/org_nodejs/node.exe ]]; then\n" +
" NODE=external/org_nodejs/node.exe\n" +
"fi\n" +
"exec $${NODE} $(location " + srcs[0] + ") \"$$@\"\n" +
"EOF",
executable = True,
testonly = testonly,
visibility = ["//visibility:private"],
)
现在是有趣的部分。 我会编写一个 .js 文件(即使它必须像tex.web一样长 30,000 行),除了 Node 标准库之外,还有零依赖项。 该程序的输入将是ops.pbtxt和api_def/base_api 中的所有其他 pbtxt 文件。 这个程序的输出将是一个巨大的 C++ 文件,它基于这个例子与TensorFlow C API和Node C++ Addon API对话。
load("//tensorflow/contrib/node:defs.bzl", "node_binary")
load("@domain_registry//java/google/registry/builddefs:zip_file.bzl", "zip_file")
node_binary(
name = "generate",
srcs = ["generate.js"],
data = [
"//tensorflow/core:ops/ops.pbtxt",
"//tensorflow/core/api_def:base_api_def",
],
)
genrule(
name = "api",
srcs = [
"//tensorflow/core:ops/ops.pbtxt",
"//tensorflow/core/api_def:base_api_def",
],
cmd = "$(location :generate) $(location api.cc) $(SRCS)",
outs = ["api.cc"],
tools = [":generate"],
)
zip_file(
name = "tfnode",
srcs = [
"package.json",
"README.md",
"api.cc",
"binding.gyp",
"tfnode.js",
],
mappings = {"tensorflow/contrib/node": "package"},
)
然后你bazel build //tensorflow/contrib/node:tfnode.zip
和 bam 你已经把你的 NodeJS 项目全部打包并准备好分发到像 NPM 这样的地方。
如果我写了这个(我不会),它将是 TensorFlow API 定义的准系统直接映射。 然后我会鼓励我们社区的朋友为图书馆贴面。 关于友好的现代高级惯用 JS 和 ML API 有多种不同的愿景,每一种都适合不同的用例。 但是,它们都可以共享此绑定。
请注意,有一些我们已经生成语言绑定的示例。 请参阅tensorflow/go/genop/main.go和tensorflow/go/op/generate.go以获取灵感。
看起来 TensorFlow 团队现在将此作为重中之重: https :
我们可能想将此讨论移至此处: https :
将在该问题上跟踪 Node.js 绑定到 C API 的进展。
作为对这个问题的更新 - 我们已经开源了 TFJS 的 Node.js 绑定: https :
我们正在努力获得合适的 NPM 版本,并将很快发布!
我会关闭这个问题。 请跟踪 tensorflow/tfjs 和 tensorflow/tfjs-node 以获取进一步更新。
相关且可能感兴趣:我设法通过 Webassembly 在浏览器中运行 TF。 有关演示,请参阅https://humantoanimal.com ; 我将在未来提供更多细节。
@nuchi ,那么您是否将必要的 TensorFlow 代码从 C API 编译到 WebAssembly? 或者你在使用 TensorFlow.js?
@lastmjs我在我提供的链接中进行了更详细的解释。 简短版本:我添加了 Webassembly 作为 XLA 编译目标。 我没有以任何方式使用 Tensorflow.js。
@nuchi 干得好! 我在这里知道另一个关于 TensorFlow 的 WebAssemble 研究:
https://medium.com/@tomasreimers/compiling -tensorflow-for-the-browser-f3387b8e1e1c
很高兴看到这方面取得了官方进展。 我很想通过 JS 的易用性和可组合性,让快速、并行的 GPU 计算能力触手可及。
不久前我开始为 TensorFlow 开发 NodeJS 绑定,但最近没有太多空闲时间投入到它上面。
这个概念类似于@jart的建议方法。
我为这个项目设定了三个目标:
相反,它应该下载并使用预先构建的多平台 python 二进制文件,并即时下载任何需要的源文件。
相反,它应该提供一个完整的与 C API 的一对一接口,尽可能
相反,它应该使用 swig 脚本来映射 Tensorflow/stdc++/V8/node 之间的核心数据结构,其余的将随之而来。
我在这方面走得很远,但最后我记得有一个与 TF_Session 相关的段错误的问题。
现在它只是在收集灰尘,所以如果有人想加入并帮助解决这个问题,我很乐意接受 PR。
解决此问题后关闭
最有用的评论
+1!