【发布时间】:2020-03-23 19:25:21
【问题描述】:
使用 Tensorflow.JS,我正在尝试使用 softmax 激活函数让机器学习模型在最后一个密集层上运行。当我尝试运行它时,我收到:
检查目标时出错:预期dense_Dense2 的形状为[,1],但得到的数组的形状为[3,2]。
如果我注释掉 fit 函数并运行它,我会得到一个 1x2 数组(正如预期的那样,因为我在最后一层有 2 个单元,我只进入一个测试。
此外,当我将 y 变量更改为此数组:[[1,2,3]] 时,它会进行训练(但我认为这是不正确的,因为 ys 不是最后一层的正确形状( 2).
任何建议或帮助将不胜感激,以填补我的知识空白。
var tf = require('@tensorflow/tfjs');
let xs = tf.tensor([
[1,2],
[2,1],
[0,0]
]);
let ys = tf.tensor([
[1,2],
[2,1],
[1,1]
]);
async function createModel () {
const model = tf.sequential();
model.add(tf.layers.dense({inputShape: [2], units: 32, activation: "relu"}));
model.add(tf.layers.dense({units: 2}));
model.compile({loss: "sparseCategoricalCrossentropy",optimizer:"adam"});
//await model.fit(xs, ys, {epochs:1000});
model.predict(tf.tensor([[1,2]])).print();
}
createModel();
【问题讨论】:
-
对于二元分类(softmax的2个值)应该是更好的binaryCrossentropy并将softmax改为sigmoid。
标签: machine-learning deep-learning neural-network tensorflow.js softmax