【发布时间】:2019-12-26 02:25:22
【问题描述】:
我正在使用 TensorflowJS,我对我得到的(糟糕的)结果感到惊讶。 这是我正在处理的问题: 你有一个从左上角(0,0)到右下角(1,1)的二维正方形。每个角的 RGB 颜色如下:
左上角:黑色
右上角:红色
右下:绿色
左下角:蓝色
我想推断正方形中某个点的颜色。
我已经设置了一个简单的 Tensorflow 模型。经过简单的训练后,我在右下角进行了测试……结果不是接近果岭,而是得到了不好的结果。 你能告诉我我在哪里做错了吗? 谢谢
async function test()
{
tf.setBackend('cpu');
const model = tf.sequential();
model.add(tf.layers.dense({units: 3, inputShape: [2] }));
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
const xs = tf.tensor([0,0, 1,0, 1,1, 0,1 ], [4, 2]);
const ys = tf.tensor([
[ 0, 0, 0 ], // black
[ 1, 0, 0 ], // red
[ 0, 1, 0 ], // green
[ 0, 0, 1 ], // blue
], [4, 3]);
await model.fit(xs, ys, {epochs: 5000});
const input = tf.tensor([1,1], [1, 2]);
console.log(model.predict(input).dataSync());
}
我的结果:
Float32Array(3) [0.25062745809555054, 0.7481716275215149, 0.2501324415206909]
【问题讨论】:
-
您的学习算法和数据存在一些问题。但我认为最大的问题是您的图层具有默认(“线性”)激活。由于输出值类似于多个类的概率,因此您希望使用
actions: 'softmax'。此外,与您在本示例中使用的数据相比,典型的机器学习数据更加多样化和多变(噪音更大)。 -
对不起,我的意思是
activation: 'softmax'为您的tf.layers.dense()通话。 -
我尝试将激活设置为softmax...但这并没有解决问题。我用颜色表示了正方形。见下一个链接。 !image.
标签: javascript tensorflow tensorflow.js