diff --git a/C1_Browser-based-TF-JS/W1/assignment/C1_W1_Assignment.html b/C1_Browser-based-TF-JS/W1/assignment/C1_W1_Assignment.html index 023c6143..baa37657 100755 --- a/C1_Browser-based-TF-JS/W1/assignment/C1_W1_Assignment.html +++ b/C1_Browser-based-TF-JS/W1/assignment/C1_W1_Assignment.html @@ -13,6 +13,11 @@ const trainingData = tf.data.csv(trainingUrl, { // YOUR CODE HERE + columnConfigs: { + diagnosis: { + isLabel: true + } + } }); @@ -21,7 +26,12 @@ // Therefore, there is no need to convert string labels into // a one-hot encoded array of label values like we did in the // Iris dataset example. - const convertedTrainingData = // YOUR CODE HERE + const convertedTrainingData = trainingData.map( + ({xs, ys}) => { + return {xs:Object.values(xs), ys:Object.values(ys)}; + } + + ).batch(10); const testingUrl = '/data/wdbc-test.csv'; @@ -32,6 +42,11 @@ const testingData = tf.data.csv(testingUrl, { // YOUR CODE HERE + columnConfigs: { + diagnosis: { + isLabel: true + } + } }); @@ -40,13 +55,19 @@ // Therefore, there is no need to convert string labels into // a one-hot encoded array of label values like we did in the // Iris dataset example. - const convertedTestingData = // YOUR CODE HERE + const convertedTestingData = testingData.map( + ({xs, ys}) => { + return {xs:Object.values(xs), ys:Object.values(ys)}; + } + + ).batch(10); // Specify the number of features in the space below. // HINT: You can get the number of features from the number of columns // and the number of labels in the training data. - const numOfFeatures = // YOUR CODE HERE + const numOfFeatures = (await trainingData.columnNames()).length - 1 + console.log(numOfFeatures); // In the space below create a neural network that predicts 1 if the diagnosis is malignant @@ -60,12 +81,14 @@ const model = tf.sequential(); // YOUR CODE HERE - + model.add(tf.layers.dense({inputShape: [numOfFeatures],units: 32, activation: "relu"})); + model.add(tf.layers.dense({units: 1, activation: "sigmoid"})); // Compile the model using the binaryCrossentropy loss, // the rmsprop optimizer, and accuracy for your metrics. - model.compile(// YOUR CODE HERE); + model.compile({loss: "binaryCrossentropy", optimizer: tf.train.rmsprop(0.05), metrics: ['accuracy']}); + await model.fitDataset(convertedTrainingData, @@ -82,4 +105,4 @@ - \ No newline at end of file +