tensorflow.js模型不学习

tensorflow.js model does not learn

我的模型没有学习..它应该在最后进行 softmax 计算。结果我想要一个分类(退出或不退出)。该模型应该预测客户是否会退出。我将退出列作为标签并具有 196 个输入特征。

我的遮阳板说根本没有学习。但是我不确定,如果我的模型学习了,遮阳板将如何获取信息。我是 javascript 的新手,非常感谢任何帮助。

ngOnInit() {
  this.train();
}


async train(): Promise<any> {
  const csvUrl = '/assets/little.csv';
  const csvDataset = tf.data.csv(
    csvUrl,
    {
      columnConfigs: {
        quit: {
          isLabel: true
        }
      },
      delimiter:','
    });
  const numOfFeatures = (await csvDataset.columnNames()).length -1;      
  console.log(numOfFeatures);
  const flattenedDataset =
  csvDataset
  .map(({xs, ys}: any) =>
    {
      // Convert xs(features) and ys(labels) from object form (keyed by
      // column name) to array form.
      return {xs:Object.values(xs), ys:Object.values(ys)};
    }).batch(10);    
  console.log(flattenedDataset.toArray());      

  const model = tf.sequential({
    layers: [
      tf.layers.dense({inputShape: [196], units: 100, activation: 'relu'}),
      tf.layers.dense({units: 100, activation: 'relu'}),
      tf.layers.dense({units: 100, activation: 'relu'}),        
      tf.layers.dense({units: 1, activation: 'softmax'}),        
    ]
  }); 
  await trainModel(model, flattenedDataset);
  const surface = { name: 'Model Summary', tab: 'Model Inspection'};
  tfvis.show.modelSummary(surface, model);    
  console.log('Done Training');
}

async function trainModel(model, flattenedDataset) {
  // Prepare the model for training.  
  model.compile({
    optimizer: tf.train.adam(),
    loss: tf.losses.sigmoidCrossEntropy,
    metrics: ['accuracy']
  });

  const batchSize = 32;
  const epochs = 50;

  return await model.fitDataset(flattenedDataset, {
    batchSize,
    epochs,
    shuffle: true,
    callbacks: tfvis.show.fitCallbacks(
      { name: 'Training Performance' },
      ['loss'],
      { height: 200, callbacks: ['onEpochEnd'] }
    )
  });
}  

最后一层的单元数就是类别数。有两个类别 quitno-quit。此外,您的标签应该是单热编码的。可以找到关于模型为何不学习的更一般性答案