Hassan Mslohi
Hassan Mslohi

Reputation: 1

training a model using TensorFlow js. Accuracy not changing along the training and loss is not showing

I'm trying to train a model using "binaryCrossentropy" loss. But all I get when printing out loss and accuracy is : loss :NaN. And accuracy is 59.93 (does not change over training).

Any ideas what could be the reason?

Here is the code:

const df = await dfd.readCSV("./trainOut2.csv");
const dft = await dfd.readCSV("./testOut2.csv");

const trainX = df.iloc({ columns: ["1:"] }).tensor;
const trainY = df["Survived"].tensor;

const testX = dft.iloc({ columns: ["1:"] }).tensor;
const testY = dft["Survived"].tensor;

console.log(trainX.shape, trainY.shape);

const callbacks = {
  onEpochEnd: async (epoch, logs) => {
    console.log(`
    logs:${Object.keys(logs)}
        EPOCH (${epoch + 1}):
       
          Train Accuracy: ${(logs.acc * 100).toFixed(2)},
          Val Accuracy:  ${(logs.val_acc * 100).toFixed(2)},
          Val Loss = ${(logs.val_loss * 100).toFixed(2)},
           Loss = ${(logs.loss * 100).toFixed(2)}
      `);
  },
};

const model = tf.sequential();

model.add(
  tf.layers.dense({
    inputShape: 7,
    units: 120,
    activation: "relu",
    kernelInitializer: "heNormal",
  })
);
model.add(
  tf.layers.dense({
    units: 64,
    activation: "relu",
  })
);
model.add(
  tf.layers.dense({
    units: 32,
    activation: "relu",
  })
);
model.add(
  tf.layers.dense({
    units: 1,
    activation: "sigmoid",
  })
);

model.compile({
  optimizer: "adam",
  loss: "binaryCrossentropy",
  metrics: ["accuracy"],
});

await model.fit(trainX, trainY, {
  batchSize: 32,
  epochs: 100,
  verbose: 2,
  validationData: [testX, testY],
  callbacks: callbacks,
});

Thanks for your time and feedbacks.

Upvotes: 0

Views: 415

Answers (1)

Hassan Mslohi
Hassan Mslohi

Reputation: 1

Training dataset contains empty values. Removing all lines with empty values solves the problem.

Upvotes: 0

Related Questions