s.run(classes, {input_X: X_train_flat})) # this is slow and usually skipped valid_accuracy = accuracy_score(y_val, s.run(classes, {input_X: X_val_flat})) simpleTrainingCurves.add(train_loss, val_loss, train_accuracy, valid_accuracy) # # Submit a linear model # In[35]: ## GRADED PART, DO NOT CHANGE! # Testing shapes grader.set_answer( "9XaAS", grading_utils.get_tensors_shapes_string( [W, b, input_X, input_y, logits, probas, classes])) # Validation loss grader.set_answer("vmogZ", s.run(loss, { input_X: X_val_flat, input_y: y_val_oh })) # Validation accuracy grader.set_answer("RMv95", accuracy_score(y_val, s.run(classes, {input_X: X_val_flat}))) # In[36]: # you can make submission with answers so far to check yourself at this stage grader.submit(COURSERA_EMAIL, COURSERA_TOKEN) # # MLP with hidden layers
batch_losses = [] for batch_start in range(0, X_train_flat.shape[0], BATCH_SIZE): # data is already shuffled _, batch_loss = s.run([step, loss], {input_X: X_train_flat[batch_start:batch_start+BATCH_SIZE], input_y: y_train_oh[batch_start:batch_start+BATCH_SIZE]}) # collect batch losses, this is almost free as we need a forward pass for backprop anyway batch_losses.append(batch_loss) train_loss = np.mean(batch_losses) val_loss = s.run(loss, {input_X: X_val_flat, input_y: y_val_oh}) # this part is usually small train_accuracy = accuracy_score(y_train, s.run(classes, {input_X: X_train_flat})) # this is slow and usually skipped valid_accuracy = accuracy_score(y_val, s.run(classes, {input_X: X_val_flat})) simpleTrainingCurves.add(train_loss, val_loss, train_accuracy, valid_accuracy) ## GRADED PART, DO NOT CHANGE! # Testing shapes grader.set_answer("9XaAS", grading_utils.get_tensors_shapes_string([W, b, input_X, input_y, logits, probas, classes])) # Validation loss grader.set_answer("vmogZ", s.run(loss, {input_X: X_val_flat, input_y: y_val_oh})) # Validation accuracy grader.set_answer("RMv95", accuracy_score(y_val, s.run(classes, {input_X: X_val_flat}))) # you can make submission with answers so far to check yourself at this stage grader.submit(COURSERA_EMAIL, COURSERA_TOKEN) # write the code here to get a new `step` operation and then run the cell with training loop above. # name your variables in the same way (e.g. logits, probas, classes, etc) for safety. ### YOUR CODE HERE ### hidden1 = tf.layers.dense(input_X, 256, activation=tf.nn.sigmoid) hidden2 = tf.layers.dense(hidden1, 256, activation=tf.nn.sigmoid) logits = tf.layers.dense(hidden2, 10)