【发布时间】:2019-04-03 16:00:56
【问题描述】:
我想使用 TensorFlow 拟合非线性多变量方程。方程如下。要拟合的参数是 a0、a1 和 a2。自变量是 S 和 R,而 F 是因变量。 S、R、F的对应数据在下面的代码中提供,分别为Sdata、Rdata和Fdata。
F = a0 + a1*S + a2*R
我
const Sdata = tf.tensor1d([13.8,13.8,20.2,12.1,14.1,29.4,13.7,16.6,18.9,15.5]);
const Fdata = tf.tensor1d([46.7,130.7,78.1,72.2,40.1,78.6,57.4,170.7,80.2,45.2]);
const Rdata = tf.tensor1d([1.5,4.5,2.5,3.0,3.5,3.0,2.5,3.0,3.0,2.5])
const a0 = tf.scalar(Math.random()).variable();
const a1 = tf.scalar(Math.random()).variable();
const a2 = tf.scalar(Math.random()).variable();
const fun = (r,s) => a2.mul(r).add(a1.mul(s)).add(a0)
const cost = (pred, label) => pred.sub(label).square().mean();
const learningRate = 0.01;
const optimizer = tf.train.sgd(learningRate);
// Train the model.
for (let i = 0; i < 800; i++) {
optimizer.minimize(() => cost(fun(Rdata,Sdata), Fdata));
}
如我的代码所示,我假设函数“fun”可以采用两个自变量。我得到的不是 a0 = -6.6986、a1 = 0.8005 和 a2 = 25.2523,而是 NaN。
这是否意味着无法在 tensorflow.js 中拟合多变量函数?我不这么认为。我将不胜感激。
【问题讨论】:
标签: javascript math regression mathematical-optimization tensorflow.js