关灯
开启左侧

使用electron+deeplearnjs构建深度学习环境

[复制链接]
李超 发表于 2018-7-31 10:29:59 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
本帖最后由 李超 于 2018-7-31 10:31 编辑

前言

目前javascript的功能越来越强大,除了可以用js+html+css来做网页之外,还可以依赖一些框架和库来做app应用,使用html+css+js来做手机应用比较流行的是react native和weex。html+css+js实现桌面应用比较流行的是electron和nw.js。切入今天的主题,使用js来做深度学习。

js深度学习库

已经有很多牛人在尝试将js用于深度学习,作为一个前端的开发者,也可以尝试着了解这方面的知识,在目前,这是一个趋势,一切都在向人工智能靠拢。下面是一些js用于机器学习的库:
* brain
* playground
* FlappyLearning
* synaptic
* Land Lines
* convnetjs
* thing-translator
* neurojs
* machine_learning
* deepforge
* deeplearnjs

deeplearnjs

deeplearnjs是google开源的一套深度学习库,支持typescript和es6等语法。它提供了很丰富的API,如果了解过tensorflow的人,学习deeplearnjs会感觉很亲切,因为deeplearnjs里面的很多思想和tensorflow是很相似的。deeplearnjs可以在浏览器里面训练机器学习模型,同时支持CPU和GPU。这里需要一个前提是浏览器需要支持WebGL才能使用该库,可以下载最新的chrome浏览器。可以在这里查看官网提供的demo演示。

让deeplearnjs在服务端运行

目前deeplearnjs推荐的运行环境的chrome浏览器,但也可以在node上运行deeplearnjs,这儿尝试的一种办法是使用electron+deeplearnjs+node.js的方式。

环境搭建步骤:
  • 安装node V8.4.0
  • 安装electron v1.8.0 beta,需要支持WebGL,所以需要高版本的electron。使用命令:npm install electron@beta, or npm i electron@1.8.0
  • 安装deeplearnjs 命令:npm install deeplearn
    到目前为止环境已经搭建完成。
测试:

在上面环境搭建目录下,新建文件:
package.json

  1. {
  2.   "name": "dp",
  3.   "version": "1.0.0",
  4.   "description": "",
  5.   "main": "main.js",
  6.   "dependencies": {
  7.     "deeplearn": "^0.1.2"
  8.   },
  9.   "devDependencies": {},
  10.   "scripts": {
  11.     "start":"electron ."
  12.   },
  13.   "author": "",
  14.   "license": "ISC"
  15. }
复制代码

main.js

  1. const {app, BrowserWindow} = require('electron')
  2. const path = require('path')
  3. const url = require('url')

  4. // Keep a global reference of the window object, if you don't, the window will
  5. // be closed automatically when the JavaScript object is garbage collected.
  6. let win

  7. function createWindow () {
  8.   // Create the browser window.
  9.   win = new BrowserWindow({width: 800, height: 600})

  10.   // and load the index.html of the app.
  11.   win.loadURL(url.format({
  12.     pathname: path.join(__dirname, 'index.html'),
  13.     protocol: 'file:',
  14.     slashes: true
  15.   }))

  16.   // Open the DevTools.
  17. //  win.webContents.openDevTools()

  18.   // Emitted when the window is closed.
  19.   win.on('closed', () => {
  20.     // Dereference the window object, usually you would store windows
  21.     // in an array if your app supports multi windows, this is the time
  22.     // when you should delete the corresponding element.
  23.     win = null
  24.   })
  25. }

  26. // This method will be called when Electron has finished
  27. // initialization and is ready to create browser windows.
  28. // Some APIs can only be used after this event occurs.
  29. app.on('ready', createWindow)

  30. // Quit when all windows are closed.
  31. app.on('window-all-closed', () => {
  32.   // On macOS it is common for applications and their menu bar
  33.   // to stay active until the user quits explicitly with Cmd + Q
  34.   if (process.platform !== 'darwin') {
  35.     app.quit()
  36.   }
  37. })

  38. app.on('activate', () => {
  39.   // On macOS it's common to re-create a window in the app when the
  40.   // dock icon is clicked and there are no other windows open.
  41.   if (win === null) {
  42.     createWindow()
  43.   }
  44. })
复制代码

index.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>deeplearn demo1</title>
  5. </head>

  6. <body>
  7.     <script>
  8.         const deeplearn=require('deeplearn');
  9.         const util=require('util');
  10.         const math = new deeplearn.NDArrayMathGPU();
  11.         const a=deeplearn.Array1D.new([1,2,3]);
  12.         const b=deeplearn.Scalar.new(2);

  13.         math.scope(()=>{
  14.             const result=math.add(a,b);
  15.             document.body.append(util.inspect(result));
  16.         });
  17.     </script>
  18. </body>
  19. </html>
复制代码

运行命令npm run start,然后看见如下界面出现,则环境搭建成功。

QQ图片20180731103728.png



 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

排行榜
关闭

站长推荐上一条 /1 下一条

官方微信

全国服务热线:

400-0708-360

公司地址:国家西部信息安全产业基地(成都市高新区云华路333号)

邮编:610000    Email:2908503813@qq.com

Copyright   ©2015-2016  EOIT论坛Powered by©Discuz!    ( 蜀ICP备11000634号-7 )