【发布时间】:2018-08-06 20:16:04
【问题描述】:
我正在玩一些 tensorflow 代码,这些代码是从一个预测鲜花数据的 youtube 教程中获得的。这是脚本(训练数据分配给变量“iris”,测试数据分配给变量“irisTesting”:
const trainingData = tf.tensor2d(iris.map(item => [
item.sepal_length, item.petal_length, item.petal_width,
]));
const outputData = tf.tensor2d(iris.map(item => [
item.species === "setosa" ? 1 : 0,
item.species === "virginica" ? 1 : 0,
item.species === "versicolor" ? 1 : 0,
item.sepal_width
]));
const testingData = tf.tensor2d(irisTesting.map(item => [
item.sepal_length, item.petal_length, item.petal_width
]));
const model = tf.sequential();
model.add(tf.layers.dense({
inputShape: [3],
activation: "sigmoid",
units: 5,
}));
model.add(tf.layers.dense({
inputShape: [5],
activation: "sigmoid",
units: 4,
}));
model.add(tf.layers.dense({
activation: "sigmoid",
units: 4,
}));
model.compile({
loss: "meanSquaredError",
optimizer: tf.train.adam(.06),
});
const startTime = Date.now();
model.fit(trainingData, outputData, {epochs: 100})
.then((history) => {
//console.log(history);
console.log("Done training in " + (Date.now()-startTime) / 1000 + " seconds.");
model.predict(testingData).print();
});
当控制台打印预测的 sepal_width 时,它的上限似乎为 1。训练数据的 sepal_width 值远大于 1,但这是记录的数据:
Tensor
[[0.9561102, 0.0028415, 0.0708825, 0.9997129],
[0.0081552, 0.9410981, 0.0867947, 0.999761 ],
[0.0346453, 0.1170913, 0.8383155, 0.9999373]]
最后(第四)列将是预测的sepal_width 值。预测值应该大于 1,但似乎有什么东西阻止了它大于 1。
这是原始代码: https://gist.github.com/learncodeacademy/a96d80a29538c7625652493c2407b6be
【问题讨论】:
标签: javascript tensorflow neural-network tensorflow.js