Я хочу подогнать нелинейное многомерное уравнение, используя TensorFlow. Уравнение приведено ниже. Подходящие параметры: a0, a1 и a2. Независимыми переменными являются S и R, а F - зависимая переменная. Соответствующие данные для S, R, F представлены в приведенном ниже коде как Sdata, Rdata и Fdata соответственно.
F = a0 + a1 * S + a2 * R
I
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.
Означает ли это, что невозможно разместить многопараметрические функции в tenorflow.js? Я так не думаю. Я буду признателен за понимание этого вопроса.