PART2:A gentle introduction to TensorFlow.js

在本章中,以一个简单的下载时间预测问题为动力示例,我们将介绍完整的机器学习模型的主要组成部分。 我们将从实用的角度介绍张量,建模和优化,以便您可以直观地了解张量,它们如何工作以及如何正确使用它们。

1 使用TensorFlow.js预测下载时间

Deep learning with JavaScript:

 首先,我们将访问我们的培训数据。 在机器学习中,数据可以从磁盘读取、在网络上下载、生成或简单地硬编码。在这个例子中我们采用最后一种方法是因为它很方便,并且我们只处理一小部分数据量。其次,我们将数据转换为张量,以便将它们输入到我们的模型中。 下一步是创建一个模型,就像我们在第1章中看到的那样,该模型类似于设计适当的可训练函数:将输入数据映射到我们要预测的事物的函数。在这种情况下,输入数据和预测目标都是数字。 一旦我们的模型和数据可用,我们将对模型进行训练,并随时监控其报告的指标。 最后,我们将使用经过训练的模型对尚未见到的数据进行预测,并评估模型的准确性。我们将通过复制和粘贴可运行代码片段以及有关理论和工具的解释来完成每个阶段。本文中的代码将以两种格式显示。 第一种格式,代码清单,提供了在参考代码存储库中可以找到的结构代码。 每清单中有标题和数字。 例如,清单2.1包含非常简短的HTML您可以将逐字复制到文件上的摘要(例如/tmp/tmp.html)您的计算机,然后在Web浏览器中打开文件:///tmp/tmp.html,它本身不会做很多事情。代码的第二种格式是控制台交互。

2.模型

Deep learning with JavaScript:

其中,kernel和Bias是可调的,创造模型时,它们是随机产生的。所以我们需要在训练过程中,找到最适合我们这个工程的k和b,那么我们需要两个条件:

1.一个可以评价现在权重表现情况方法;

2.一个更新权重的方法,以优化权重。

那么,就引出了模型编译步骤:

1.损失函数(loss function):通过误差来评价目前模型的表现好坏,越小,表现越好,如果我们的模型训练很长时间,并且损失没有减少,这可能意味着我们的模型没有学会拟合数据; 

2.优化器(optimizer):神经网络通过它来更新权值,这是基于数据和损失函数的。

举例(loss function):

平均绝对误差:meanAbsoluteError = average( absolute(model_Output - targets) )

For example, given
modelOutput = [1.1, 2.2, 3.3, 3.6]
targets = [1.0, 2.0, 3.0, 4.0]
then,
meanAbsoluteError = average([|1.1 - 1.0|, |2.2 - 2.0|,
|3.3 - 3.0|, |3.6 - 4.0|])
= average([0.1, 0.2, 0.3, 0.4])
= 0.25

举例(opimizer):

随机梯度下降:stochastic gradient descent-sgd.简而言之,这意味着我们将使用微积分来确定应对权重进行哪些调整,以减少损失; 然后我们将进行这些调整并重复该过程。

3.训练

(async function() {
await model.fit(trainTensors.sizeMB,
trainTensors.timeSec,
{epochs: 10});
})();
其中,fit()方法是用数据训练模型,epochs是遍历数据的次数,10表示遍历样本10次(迭代10次 每次优化一个权重)。这个过程是很耗时间的,所以我们用异步方法/await不让这个过程阻塞主线程。这种方法和Javascript里面的asynch fetch相似。
 
模型的evalidate()方法计算应用于提供的示例特征和目标的损失函数。 它与fit()方法类似,因为它可以计算相同的损失,但是valuate()不会更新模型的权重。 我们使用valuate()来估计测试数据上模型的质量,从而对模型在将来的应用程序中的性能有所了解.
model.evaluate(testTensors.sizeMB, testTensors.timeSec).print();
Tensor
0.31778740882873535
 
计算出来的损失函数的值约为0.318.

 

 

 

 

 

 

 

 

 

 

 

 

.

相关文章: