使用Tensorflow.js进行非线性指数回归

塞尔吉奥

我正在尝试使用tensorflow.js将指数数据拟合为指数回归,例如:

y(x)= c0 e ^(k x)

我遵循了一些示例,在这些示例中,它们仅用几个纪元就拟合了线性回归,例如此处

问题是,当我将张量方程式更改为指数函数时,即使我增加到500-5000个历元并提供接近的初始值,也无法正确拟合。学习率高时,变量会达到很高的值,而学习率低时,变量不会发生实质性变化。

我在代码中做错了什么吗?是因为优化不适用于指数函数吗?在不使用tf.js的情况下,还有其他方法可以在浏览器中实现吗?

我使用的代码是:

const x = tf.tensor1d([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);
const y = tf.tensor1d([2.5879,3.1153,3.7041,4.6216,5.2307,5.6205,6.9904,7.8416,9.0201,10.5586,12.1638,14.1438,16.5961,19.2497,22.3430]);


const c0 = tf.scalar(2).variable();
const k = tf.scalar(0.10).variable();

// y = c0*e^(k*x)
const fun = (x) => x.mul(k).exp().mul(c0);
const cost = (pred, label) => pred.sub(label).square().mean();

const learning_rate = 0.001;
const optimizer = tf.train.sgd(learning_rate);

// Train the model.
for (let i = 0; i < 20; i++) {
    optimizer.minimize(() => cost(fun(x), y));
}

console.log(`c0: ${c0.dataSync()}, k: ${k.dataSync()}`);

const preds = fun(x).dataSync();
preds.forEach((pred, i) => {
   console.log(`x: ${i}, pred: ${pred}`);
});
教育

它与所使用的优化程序以及可能未收敛的初始值集有关。如果它们设置不正确,模型可能会发散。

const x = tf.tensor1d([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);
const y = tf.tensor1d([2.5879,3.1153,3.7041,4.6216,5.2307,5.6205,6.9904,7.8416,9.0201,10.5586,12.1638,14.1438,16.5961,19.2497,22.3430]);


const c0 = tf.scalar(2).variable();
const k = tf.scalar(0.10).variable();

// y = c0*e^(k*x)
const fun = (x) => x.mul(k).exp().mul(c0);
const cost = (pred, label) => pred.sub(label).square().mean();

const learning_rate = 0.1;
const optimizer = tf.train.adagrad(learning_rate);

// Train the model.
for (let i = 0; i < 500; i++) {
    optimizer.minimize(() => cost(fun(x), y));
}

console.log(`c0: ${c0.dataSync()}, k: ${k.dataSync()}`);
fun(x).print()

// [2.4752154, 2.899802, 3.3972201, 3.9799631, 4.6626663, 5.4624777, 6.3994851, 7.4972224, 8.7832594, 10.289897, 12.0549774, 14.1228304, 16.545393, 19.3835087, 22.7084637]

使用tf.train.adagrad,似乎我们具有良好的收敛性。对于初始化值,我们还可以Math.Random()仅将其用于随机值,并多次进行类似操作,直到找到导致更好预测的值集。同样,可以learning_rate对已epochs使用和的数量进行微调

另外,可能要使用几个优化器,看看哪个在整体上表现最好

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Tensorflow.js进行非线性指数回归

来自分类Dev

使用PyMC(2)进行稳健的非线性回归

来自分类Dev

使用C#和“ Accord.NET”进行非线性支持向量回归

来自分类Dev

R 使用指数回归方程

来自分类Dev

如果使用正态分布的目标值进行训练,非线性回归算法的性能会更好吗?

来自分类Dev

使用postgres进行线性回归

来自分类Dev

线性回归,Tensorflow,非线性方程,tf.contrib.learn

来自分类Dev

使用Tensorflow的多元线性回归模型

来自分类Dev

将线性回归与使用R的对数线性回归进行比较

来自分类Dev

如何使用TensorFlow.js进行多变量回归

来自分类Dev

在TensorFlow中使用ReLU建立非线性模型

来自分类Dev

使用Pandas数据框进行线性回归

来自分类Dev

使用函数列表进行线性回归

来自分类Dev

使用python进行线性回归的简单预测

来自分类Dev

使用sklearn进行线性回归的预测

来自分类Dev

Xmgrace:使用误差线进行线性回归

来自分类Dev

如何使用线性回归模型进行预测?

来自分类Dev

ShinyIncubator:使用矩阵输入进行线性回归

来自分类Dev

使用张量流进行线性回归

来自分类Dev

使用 Apache Beam 进行线性回归

来自分类Dev

使用SAS进行约束系数回归

来自分类Dev

使用红黑树进行非线性优化

来自分类Dev

使用曲线对矩阵(图像)中的值进行非线性转换

来自分类Dev

使用Matlab Kalman进行非线性系统估计

来自分类Dev

使用红黑树进行非线性优化

来自分类Dev

使用曲线对矩阵(图像)中的值进行非线性转换

来自分类Dev

在 Python 中使用线性代数进行线性回归

来自分类Dev

在TensorFlow线性回归Python中使用属性和目标矩阵

来自分类Dev

如何在插入符号中使用 stats::nls 非线性最小二乘回归?

Related 相关文章

  1. 1

    使用Tensorflow.js进行非线性指数回归

  2. 2

    使用PyMC(2)进行稳健的非线性回归

  3. 3

    使用C#和“ Accord.NET”进行非线性支持向量回归

  4. 4

    R 使用指数回归方程

  5. 5

    如果使用正态分布的目标值进行训练,非线性回归算法的性能会更好吗?

  6. 6

    使用postgres进行线性回归

  7. 7

    线性回归,Tensorflow,非线性方程,tf.contrib.learn

  8. 8

    使用Tensorflow的多元线性回归模型

  9. 9

    将线性回归与使用R的对数线性回归进行比较

  10. 10

    如何使用TensorFlow.js进行多变量回归

  11. 11

    在TensorFlow中使用ReLU建立非线性模型

  12. 12

    使用Pandas数据框进行线性回归

  13. 13

    使用函数列表进行线性回归

  14. 14

    使用python进行线性回归的简单预测

  15. 15

    使用sklearn进行线性回归的预测

  16. 16

    Xmgrace:使用误差线进行线性回归

  17. 17

    如何使用线性回归模型进行预测?

  18. 18

    ShinyIncubator:使用矩阵输入进行线性回归

  19. 19

    使用张量流进行线性回归

  20. 20

    使用 Apache Beam 进行线性回归

  21. 21

    使用SAS进行约束系数回归

  22. 22

    使用红黑树进行非线性优化

  23. 23

    使用曲线对矩阵(图像)中的值进行非线性转换

  24. 24

    使用Matlab Kalman进行非线性系统估计

  25. 25

    使用红黑树进行非线性优化

  26. 26

    使用曲线对矩阵(图像)中的值进行非线性转换

  27. 27

    在 Python 中使用线性代数进行线性回归

  28. 28

    在TensorFlow线性回归Python中使用属性和目标矩阵

  29. 29

    如何在插入符号中使用 stats::nls 非线性最小二乘回归?

热门标签

归档