如何为单个输出MLP设计Tensorflow Js模型?

时间:2018-06-22 14:48:20

标签: node.js neural-network tensorflow.js

我正在尝试使用Tensorflow Js实施和测试单个输出MLP,其中我的数据如下所示:

dataset = [[x_1, x_2, ..., x_n, y], ...]

这是我的代码:

     for (var i = 0; i < dataset.length; ++i) {
         x[i] = dataset[i].slice(0, inputLength);
         y[i] = dataset[i][inputLength];
     }

     const xTrain = tf.tensor2d(x.slice(1));
     const yTrain = tf.tensor1d(y.slice(1));

     const model = tf.sequential();
     model.add(tf.layers.dense({inputShape: [inputLength], units: 10}));
     model.add(tf.layers.dense({units: 1}));
     const learningRate = 0.1;
     const optimizer = tf.train.sgd(learningRate);
     model.compile({loss: 'meanSquaredError', optimizer});

     return model.fit(
         xTrain,
         yTrain,
         {
             batchSize: 10,
             epochs: 5
         }
     )

问题是我的模型没有收敛,并且每一步的损失函数的值都是null。另外,请注意,我知道我可以使用多元回归来解决这个问题,但是我想将结果与MLP进行比较。

我想知道是否有人可以帮助我。

1 个答案:

答案 0 :(得分:1)

model.fit()中使用的x / y张量的尺寸必须比模型的第一层/最后一层的形状大一个,以表示多个训练数据集,因此可以进行GPU加速的批量训练

模型的另一个问题是较高的learningRate(与训练值的大小有关),这会阻止模型收敛,因为它会跳过最优解并失去控制。

减小learningRate或将学习值标准化为较小的幅度。