在机器学习飞速发展的今天,各种机器学习平台层出不穷。为了满足不同业务场景的需求,可以将机器学习模型部署到Android、iOS、Web浏览器上,使模型在设备端实现。演绎,从而发挥模型的潜能。其中,TensorFlow.js是TensorFlow的JavaScript版本,支持GPU硬件加速,可以运行在Node.js或浏览器环境中。它不仅支持基于JavaScript从头开始开发、训练和部署模型,还可以用于运行现有Python版本的TensorFlow模型,或者基于现有模型继续训练。TensorFlow.js的优势TensorFlow.js允许用户在浏览器中加载TensorFlow模型,允许用户通过本地CPU/GPU资源进行机器学习推演。在浏览器端进行机器学习,与服务器端相比,将具有以下四大优势:1.无需安装软件或驱动程序(打开浏览器即可使用);3、通过手机浏览器,可以调用手机硬件的各种传感器(如:GPS、加速度传感器、摄像头等);4、用户的数据可以在本地完成,无需上传到服务器。TensorFlow.js架构上面介绍了TensorFlow.js的优点,这里让我们了解一下TensorFlow.js的架构。如图1所示,TensorFlow.js架构包括CoreAPI和LayersAPI(图的上半部分)。其中,LayersAPI提供了更高级的接口,比如类似于KerasAPI的语法结构。这些语法结构的目的是让开发者可以使用JavaScript通过更细粒度的抽象来轻松开发机器学习。CoreAPI主要包括TensorFlow.js提供的核心功能,如Tensor的创建、数据计算、内存管理等。同时,CoreAPI还提供了将Python中的机器学习模型转换成浏览器可以使用的JSON格式的工具。使用,以便可以在JavaScript中重用现有模型。因此CoreAPI可以运行在浏览器端,可以使用WebGL进行GPU加速。当然也可以运行在Node.js上,根据具体的运行环境通过GPU和TPU进行加速。图1TensorFlow.js架构TensorFlow.js线性回归案例上面已经提到了TensorFlow.js的优势和架构。在这里,为了让大家对TensorFlow.js有更深入的了解,我们举一个简单的线性回归例子,看看在浏览器中如何实现机器学习在服务端的训练和推导。假设我们需要建立一个y=ax1+bx2+c的线性模型,如图2所示,需要以下步骤:1.下载TensorFlow.js文件2.训练数据和测试数据3.建立模型4.训练模型5.模型应用图2TensorFlow.js构建线性回归模型从这五个步骤可以看出,基本过程与用Python构建模型是一样的,只是第一步需要下载TensorFlow。.js文件。如图3所示,为了加载TensorFlow.js文件,我们需要在页面的head标签中引入脚本。tf.min.js文件已经部署到TensorFlowCDN服务器上,我们只需要引用该文件即可。图3引用TensorFlow.js文件为了保证正确导入TensorFlow.js文件,如图4所示,打开浏览器打开开发者工具,在Console中输入tf.version获取tfjs-core和tfjs对应的TensorFlow-backend-cpu等信息,说明文件导入成功。由于TensorFlow.js文件中包含了TensorFlow计算库,因此需要保证文件加载正确。图4确认正确导入了TensorFlow.js文件加载完TensorFlow.js文件后,我们就可以在html中编写机器学习代码了。如图5所示,在script标签中写入如下代码,其中使用async的doTraining方法训练模型,epoch为500次。这里使用async的目的是防止网页上的其他操作被阻塞。函数内部调用模型中的fit方法对模型进行拟合,入参为xs和ys,在回调函数callbacks中输出拟合结果,打印loss的损失函数。下一步是构建模型。这里我们使用tf.sequential();建立模型。为了构建y=ax1+bx2+c模型,我们需要构建一个神经元,它有两个输入和一个输出。因此,通过model.add添加一个denselayer,定义units:1,是一个神经元,inputShape:[2],输入是一个二维的。有了模型之后,通过model.complie编译模型,其中meanSquareError的损失函数和优化器都是sgd。最后通过模型的summary方法打印出整个神经元网络。然后在数据集链接中,我们准备了xs和ys作为输入,testData_x作为测试数据。最后调用doTraining(model)训练模型,使用predict方法预测结果。图5.在浏览器中训练模型。将上面的文件另存为html文件,然后重新打开。大约1-2秒后,可以看到图6的结果,右边是开发者工具打印出来的每个epoch的loss结果。可以看出,随着训练的进行,损失函数越来越小。同时最终得到Tensor的预测结果为15.5082932。图6运行结果TensorFlow.js模型重用通过上面的简单例子,我们可以很方便的在浏览器端考察机器学习模型,但是模型的训练能力需要消耗资源,而且训练时间也比较长。那么,我们能否将训练好的模型直接拿到浏览器中进行预测推演呢?答案是肯定的。一般来说,重用模型有两种方式。第一种是使用开发者自己在Python中创建的模型,使用TensroFlow提供的工具将模型保存为tfjs格式,在浏览器中使用。另一种是直接调用TensorFlow提供的模型。图7模型复用和自定义模型的开发如图8所示,我们在python中构建、训练和保存模型。构建模型、神经网络、设置优化器、损失函数、数据准备等步骤在此不再赘述。模型训练完成后,通过save_model方法保存模型。图8开发自己的模型有了模型,需要使用TensorFlow.js提供的工具对模型进行转换,使模型可以在浏览器中使用。这里使用如下命令安装TensorFlow.js工具。pipinstalltensorflowjstensorflwjs_converter--input_format=keras_saved_model./saved_model/./model/这里使用tensorflwjs_converter命令进行模型转换,输入格式为keras_saved_model,源文件地址为./saved_model/,目标文件地址为./model/,回车后,可以在目标文件地址看到转换后的文件。在浏览器中,只需要引用转换后的模型文件即可,如图9所示,脚本中的run方法直接引用模型文件model.json,使用loadLayersModel加载模型。设置好输入后,使用predict方法对模型进行预测。预料到的。图9使用转换后的模型TensorFlow提供的模型上面我们演示了我们可以使用我们自己训练好的机器学习模型,这里也可以找到https://www.tensorflow.org/js/models提供的TensorFlow模型。如图10所示,TensorFlow为一些业务场景量身定制了一些模型,例如:人像深度估计、图像分类、物体检测、人体分割、姿势检测、恶意文本检测等,想学习如何进一步部署的同学生产场景中的模型也可以花时间阅读谷歌开发专家对TensorFlow部署功能的解释和常见问题解答:https://zhibo.51cto.com/liveDetail/373图10TensorFlow提供的模型由学习TensorFlow官方在线课程,让我从一个机器学习小白成长为经验丰富的机器学习老手。从《TensorFlow入门实操课程》和《TensorFlow入门课程 — 部署篇》的课程中??,我学会了如何保存和转换机器学习模型,同时根据不同的应用场景将机器学习模型部署到Android、iOS、浏览器等。服务器和服务器。TensorFlow平台就像一个万花筒,让我看到了五光十色的应用项目,同时也了解了机器学习建模和预测的底层逻辑。如果你也想提升自己的机器学习能力,可以一起学习《TensorFlow入门课程 — 部署篇》并留下你对课程的评价。立即报名,即有机会赢取官方好礼!
