Q1. Binary classification
In order to
perform binary classification on a dataset (class 0 and 1)
using a neural network, which of the options is correct regarding
the outcomes of code snippets a and b? Here the
labels of observation are in the form : [0, 0, 1...].
Common
model:
import
tensorflow
from keras.models import Sequential
from keras.layers import Dense
from tensorflow.keras.optimizers import SGD
model = Sequential()
model.add(Dense(50, input_dim=2, activation='relu',
kernel_initializer='he_uniform'))
opt = SGD(learning_rate=0.01)
Code
snippet a:
model.add(Dense(1,
activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer=opt, metrics=['accuracy'])
Code
snippet b:
mode.add(Dense(1,
activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer=opt,
metrics=['accuracy'])
The term
"Required results" in the options means that the accuracy of
the model should be above 60%.
Note: 40% of the dataset is from class 0.
Choose the
correct answer from below:
A.     Both a and b will give required
results.
B.     Only b will give the required
results.
C.     Only a will give the required
results.
D.     Both a and b will fail to give
required results.
Ans: C 
Correct
option: only a
will give the required results.
Explanation :
 - The task requires that the
     output layer is configured with a single node and a ‘sigmoid‘ activation
     function in order to predict the probability for the required class. For
     applying the softmax function for binary classification, the output layer
     should have 2 neurons for predicting the probability of the two classes
     individually.
 
 - In order to get the required
     results using the softmax function we need to have 2 neurons in the output
     layer and also the labels should be in one-hot encoded format.
 
 
Q2. Sequential classification model
import numpy
as np
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Dense, Dropout, Activation
from tensorflow.keras.optimizers import SGD
model = Sequential()
model.add(Dense(64, activation = 'y',
input_dim=50))
model.add(Dense(64, activation = 'y'))
model.add(Dense(x, activation = 'z'))
model.compile(loss ='categorical_crossentropy',
 optimizer = SGD(lr = 0.01),
 metrics = ['accuracy'])
model.fit(X_train, y_train,
 epochs=20)
Ram wants to
create a model for the classification of types of malware in 10 different
categories. He asked for help from Shyam, and he helped him with the incomplete
code as shown above in the snippet. Help Ram in completing the code for
classification if the data used has 50 input features. Choose the best-suited
option for filling out x, y, and z.
Choose
the correct answer from below:
A.     x = len(np.unique(y_train)), y =
softmax, z = softmax
B.     x = 2 * len(np.unique(y_train)), y =
relu, z = relu
C.     x = len(np.unique(y_train)), y =
relu, z = softmax
D.     x = 0.5 * len(np.unique(y_train)), y
= relu, z = relu
Ans: C
Correct
option :
 - x = len(np.unique(y_train))
 
 - y = relu
 
 - z = softmax
 
Explanation
:
 - z : For multiclass
     classification, softmax activation is used. 
 
 - x : For the softmax
     activation, the output layer has the same number of neurons as the number
     of different classes.
 
 - y : ReLu activation
     function can definitely be used in the intermediate layers. ReLU is not
     used in the output layer of classification. Because of it's unbounded
     range, it's difficult to determine thresholds. Though ReLu can be used in
     regression tasks where negative values don't make sense like predicting
     prices.
 
Q3. Multi target output
For a
multi-output regression model:
import
tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
def get_model(n_inputs):
  model = keras.Sequential()
  model.add(Dense(20, input_dim =
n_inputs, kernel_initializer='he_uniform', activation='relu'))
  model.add(______)
  model.compile(loss = 'mae', optimizer =
'adam')
  return model
We want to
build a neural network for a multi-output regression problem. For each
observation, we have 2 outputs. Complete the code snippet to get the desired
output.
Choose
the correct answer from below:
A.     Dense(2)
B.     Dense(3)
C.     activation('sigmoid')
D.     activation('relu')
Ans:  A
Correct
option: Dense(2).
Explanation:
As we have 2 outputs
therefore our output layer of model should have 2 neurons.
 
Q4. Number of parameters
Consider the
following neural network model :
model =
Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
The number
of parameters in this model is:
Choose
the correct answer from below:
A.     120
B.     96
C.     108
D.     121
Ans: D
Correct
option : 121
Explanation
:
Number of
nodes in the input layer(i) = 8
Number of nodes in the hidden layer(h) = 12
Number of nodes in the output layer(o) = 1
So,
Number of parameters = (8×12+12×1)+12+1 = 121
 
Q5. Model summary
Complete the
following code snippet in order to get a model with the attached model summary.
import
tensorflow as tf 
model = tf.keras.models.Sequential()
# Create model
model.add(tf.keras.layers.Input(shape=(_a_, )))
model.add(tf.keras.layers._b_( 512 ,
activation='relu'))
model.add(tf.keras.layers.Dense( _c_, activation='softmax'))
model.summary()
Choose
the correct answer from below:
A.     a - 32, b - Dense, c - 10
B.     a - 12, b - Dense, c - 10
C.     a - 10, b - Dense, c - 5
D.     a - Dense(33), b - Dense, c – 50
Ans: Correct
Option:
a - 32, b - Dense, c - 10
Explanation:
 - The key for getting a is
     that in the first layer we will have the number of parameters equal to
     (no. of features in input * neurons in the first layer) + neurons in the
     first layer, i.e. 32 x 512 + 512 = 16896
 
 - As from the first layer, we got
     the info from summary as dense. Similarly, for the second layer
     (i.e. c), we can get the number of neurons from output shape
     from dense_1.
 
 
Q6. Logistic regression model
Which of
these neural networks would be most appropriately representing a logistic
regression model structure for binary classification?
a.
model =
Sequential()
model.add(Dense(units=32 input_shape=(2,), activation = ‘relu’))
model.add(Dense(units=64, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy',
metrics=['accuracy'])
b.
model =
Sequential()
model.add(Dense(units=1, input_shape=(2,), activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy',
metrics=['accuracy'])
c.
model =
Sequential()
model.add(Dense(units=1, input_shape=(2,), activation='sigmoid'))
model.add(Dense(units=1, input_shape=(2,), activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy',
metrics=['accuracy'])
d.
model =
Sequential()
model.add(Dense(units=16))
model.add(Dense(units=32, activation=’relu’))
model.add(Dense(units=64,activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy',
metrics=['accuracy'])
 
Choose the
correct answer from below:
A.     a
B.     b
C.     c
D.     d
Ans: B
Correct
Option: b
Explanation:
 - Option B would be most
     appropriate for representing a logistic regression model structure for
     binary classification. This is because it has a single input layer with
     only one neuron and a sigmoid activation function. The sigmoid function
     maps the output to a probability value between 0 and 1, which is ideal for
     binary classification problems.
     
      
 - Option A has two layers, with
     the second layer using the sigmoid activation function. While this could
     work for binary classification, the use of the ReLU activation function in
     the first layer is more commonly used in multi-class classification
     problems.
     
      
 - Option C has two sigmoid layers,
     which would be more appropriate for a deeper neural network structure for
     more complex problems.
     
      
 - Option D has a similar structure
     to Option A, with an additional hidden layer. While this could also work
     for binary classification, the use of ReLU activation in the second layer
     may make it more suitable for multi-class classification problems.
 
 
Q7. Model hyperparameters
Complete the
following model to get the training output attached to the image.
model.compile(optimizer='sgd',
  loss='sparse_categorical_crossentropy',
  metrics=[‘_a_’])
# train model
model.fit(x=X_train, 
          y=y_train, 
          epochs = _b_ , 
          validation_data=(X_test,
y_test))
Choose the
correct answer from below:
A.     a - loss, b - 5
B.     a - accuracy, b - 100
C.     a - loss, b - 25
D.     a - val_acc, b - 100
Ans: B
Correct
option:
a - accuracy, b - 100
Explanation:
As the image shows the accuracy, therefore metrics has to be accuracy.
Also in the image, the no. of epochs is showing 100.
 
Q8. Model prediction
We want to
use our trained binary classification (trained with binary cross entropy and
sigmoid activation function) model 'model', in order to get the
label for the first observation in our test dataset of shape (m x n).
Mark
the correct option which has the code to meet our
requirements.
Note: m represents the
number of observations and n represents the number of
independent variables.
Choose the
correct answer from below:
A.     model.predict(test_data[0])
B.     1 if
model.predict(test_data[0].reshape(1,-1)) < 0.5 else 0
C.     model.predict(test_data[0].reshape(1,-1))
D.     1 if
model.predict(test_data[0].reshape(1,-1)) > 0.5 else 0
Ans: D
Correct
Answer: 1 if
model.predict(test_data[0].reshape(1,-1)) > 0.5 else 0
Explanation:
 - As the model is trained with
     sigmoid activation function it’ll give the output with probability between
     0 and 1, therefore we need to use the ternary operator.
 
 - Also we need to reshape the
     test_data[0] otherwise the api will throw an error mentioning reshaping
     the data if it has single sample.