Bird
Raised Fist0
NLPml~20 mins

RNN for text classification in NLP - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
RNN Text Classifier Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Model Choice
intermediate
2:00remaining
Choosing the right RNN layer for text classification

You want to build a simple recurrent neural network for classifying movie reviews as positive or negative. Which RNN layer is best suited to capture the sequence information while keeping the model simple?

AUse a Conv1D layer because convolution is better for sequence data than RNNs.
BUse a Dense layer directly on the input sequences without any recurrent layers.
CUse a MaxPooling layer to reduce sequence length before classification.
DUse a SimpleRNN layer because it is the most basic recurrent layer and captures sequence order.
Attempts:
2 left
💡 Hint

Think about which layer type is designed to handle sequences step-by-step.

Predict Output
intermediate
2:00remaining
Output shape of RNN layer in text classification model

Consider the following Keras model snippet for text classification:

model = Sequential()
model.add(Embedding(input_dim=10000, output_dim=64, input_length=100))
model.add(SimpleRNN(32))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

print(model.layers[1].output_shape)

What will be printed as the output shape?

A(None, 32)
B(None, 100, 32)
C(None, 64)
D(None, 1)
Attempts:
2 left
💡 Hint

SimpleRNN returns the last output by default, not the full sequence.

Hyperparameter
advanced
2:00remaining
Choosing the right sequence length for RNN input

You are training an RNN for text classification on movie reviews. Your dataset has reviews of varying lengths, but you must fix the input length for the model. What is the best approach to set the sequence length?

ASet the sequence length to a fixed value like 100, truncating longer reviews and padding shorter ones.
BSet the sequence length to the maximum review length in the dataset to keep all information.
CSet the sequence length to the average review length without padding or truncation.
DDo not fix sequence length; feed variable-length sequences directly to the RNN.
Attempts:
2 left
💡 Hint

Think about model input requirements and efficiency.

Metrics
advanced
2:00remaining
Interpreting training metrics for RNN text classifier

After training an RNN text classification model, you observe the following metrics on the validation set:

  • Loss: 0.65
  • Accuracy: 0.60

What does this tell you about the model's performance?

AThe model is performing well with high accuracy and low loss.
BThe model has perfect predictions on the validation set.
CThe model is underfitting and not learning enough from the data.
DThe model is overfitting the training data.
Attempts:
2 left
💡 Hint

Consider what accuracy and loss values mean for classification.

🔧 Debug
expert
2:00remaining
Debugging vanishing gradient in RNN training

You train a SimpleRNN model for text classification but notice the training loss barely decreases after many epochs. Which of the following is the most likely cause?

AThe dataset is too large, causing slow training.
BThe model suffers from vanishing gradients due to the SimpleRNN architecture.
CThe optimizer learning rate is too high, causing divergence.
DThe batch size is too small, causing unstable updates.
Attempts:
2 left
💡 Hint

Think about common problems with SimpleRNN layers in deep sequence models.

Practice

(1/5)
1. What is the main reason to use an RNN (Recurrent Neural Network) for text classification tasks?
easy
A. Because RNNs only work with images
B. Because RNNs are faster than other neural networks
C. Because RNNs do not require any training data
D. Because RNNs can remember the order of words and context in sentences

Solution

  1. Step 1: Understand RNN's role in text

    RNNs process sequences of words one by one, keeping track of previous words to understand context.
  2. Step 2: Identify why order matters

    Text meaning depends on word order, and RNNs remember this order, unlike simple models.
  3. Final Answer:

    Because RNNs can remember the order of words and context in sentences -> Option D
  4. Quick Check:

    RNN remembers sequence = D [OK]
Hint: RNNs are for sequences and context, not speed or images [OK]
Common Mistakes:
  • Thinking RNNs are faster than other models
  • Believing RNNs don't need training data
  • Confusing RNNs with image-only models
2. Which of the following is the correct way to add a SimpleRNN layer with 32 units in Keras for text classification?
easy
A. model.add(SimpleRNN(32, input_shape=(None, 100)))
B. model.add(SimpleRNN(units=32))
C. model.add(SimpleRNN(32))
D. model.add(SimpleRNN(32, activation='relu'))

Solution

  1. Step 1: Recall SimpleRNN syntax

    SimpleRNN requires number of units and input shape for the first layer in a model.
  2. Step 2: Check options for correct usage

    model.add(SimpleRNN(32, input_shape=(None, 100))) correctly specifies 32 units and input shape (sequence length unknown, 100 features).
  3. Final Answer:

    model.add(SimpleRNN(32, input_shape=(None, 100))) -> Option A
  4. Quick Check:

    SimpleRNN needs units and input shape first layer = A [OK]
Hint: First RNN layer needs input_shape, else error [OK]
Common Mistakes:
  • Omitting input_shape in first RNN layer
  • Using activation='relu' instead of default tanh
  • Passing units as keyword incorrectly
3. Given this Keras model snippet for text classification:
model = Sequential()
model.add(Embedding(input_dim=5000, output_dim=16, input_length=10))
model.add(SimpleRNN(8))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

history = model.fit(X_train, y_train, epochs=2, batch_size=32)
print(history.history['accuracy'][-1])

What does history.history['accuracy'][-1] represent?
medium
A. The accuracy of the model on the entire training data after the last epoch
B. The accuracy of the model on the last training batch of the last epoch
C. The loss value of the model after the last epoch
D. The accuracy of the model on the validation data after the last epoch

Solution

  1. Step 1: Understand Keras history object

    history.history['accuracy'] stores training accuracy per epoch, so last element is final epoch training accuracy.
  2. Step 2: Differentiate training vs batch vs validation

    It is training accuracy on all training data after last epoch, not batch or validation accuracy.
  3. Final Answer:

    The accuracy of the model on the entire training data after the last epoch -> Option A
  4. Quick Check:

    history.history['accuracy'][-1] = final training accuracy [OK]
Hint: history.history['accuracy'] is training accuracy per epoch [OK]
Common Mistakes:
  • Confusing batch accuracy with epoch accuracy
  • Mixing loss and accuracy values
  • Assuming validation accuracy without validation data
4. You wrote this code to build an RNN model for text classification but get an error:
model = Sequential()
model.add(SimpleRNN(16))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

What is the most likely cause of the error?
medium
A. Dense layer cannot have sigmoid activation
B. SimpleRNN units must be 32 or more
C. Missing input shape for the first SimpleRNN layer
D. Loss function 'binary_crossentropy' is invalid

Solution

  1. Step 1: Check first layer requirements

    The first RNN layer must know input shape to accept data; missing input_shape causes error.
  2. Step 2: Validate other options

    Sigmoid activation in Dense is valid for binary classification; units can be any positive integer; binary_crossentropy is valid loss.
  3. Final Answer:

    Missing input shape for the first SimpleRNN layer -> Option C
  4. Quick Check:

    First RNN layer needs input_shape = B [OK]
Hint: Always set input_shape in first RNN layer to avoid errors [OK]
Common Mistakes:
  • Assuming activation or loss function causes error
  • Thinking units must be 32 or more
  • Ignoring input shape requirement
5. You want to improve your RNN text classifier by adding an Embedding layer before the SimpleRNN. Which of these changes is correct and why?
Original:
model = Sequential()
model.add(SimpleRNN(16, input_shape=(10, 100)))
model.add(Dense(1, activation='sigmoid'))

Change:
model = Sequential()
model.add(Embedding(input_dim=5000, output_dim=100, input_length=10))
model.add(SimpleRNN(16))
model.add(Dense(1, activation='sigmoid'))
hard
A. Incorrect: Embedding output_dim must match SimpleRNN units
B. Correct: Embedding converts word indices to vectors, so SimpleRNN input shape changes automatically
C. Incorrect: Embedding layer should come after SimpleRNN
D. Incorrect: Embedding layer requires activation='relu'

Solution

  1. Step 1: Understand Embedding role

    Embedding layer converts integer word indices into dense vectors, preparing input for RNN.
  2. Step 2: Check model order and shapes

    Embedding outputs shape (batch, sequence_length, output_dim), matching SimpleRNN expected input shape, so no input_shape needed in SimpleRNN.
  3. Final Answer:

    Correct: Embedding converts word indices to vectors, so SimpleRNN input shape changes automatically -> Option B
  4. Quick Check:

    Embedding before RNN changes input shape correctly = C [OK]
Hint: Embedding layer must come before RNN to convert words to vectors [OK]
Common Mistakes:
  • Placing Embedding after RNN
  • Matching output_dim to RNN units incorrectly
  • Adding activation to Embedding layer