Bird
Raised Fist0
TensorFlowml~20 mins

Multi-input and multi-output models in TensorFlow - 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
🎖️
Multi-Input Multi-Output Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output shape of a multi-input model
Consider a TensorFlow model with two inputs: one of shape (None, 10) and another of shape (None, 5). Both inputs are concatenated and passed through a Dense layer with 8 units. What is the shape of the model's output?
TensorFlow
import tensorflow as tf

input1 = tf.keras.Input(shape=(10,))
input2 = tf.keras.Input(shape=(5,))

concat = tf.keras.layers.Concatenate()([input1, input2])
output = tf.keras.layers.Dense(8)(concat)

model = tf.keras.Model(inputs=[input1, input2], outputs=output)

print(model.output_shape)
A(None, 8)
B(None, 10)
C(None, 15)
D(None, 5)
Attempts:
2 left
💡 Hint
The Dense layer outputs a tensor with shape (batch_size, units).
Model Choice
intermediate
2:00remaining
Choosing the correct multi-output model architecture
You want to build a TensorFlow model that takes one input of shape (20,) and produces two outputs: one for regression (a single continuous value) and one for classification (3 classes). Which model architecture below correctly implements this?
AOne input layer, two Dense layers with 3 units each and relu activation for outputs.
BTwo input layers, one output layer with 4 units and softmax activation.
COne input layer, one Dense layer with 4 units and sigmoid activation for both outputs.
DOne input layer, shared Dense layers, then two separate Dense layers: one with 1 unit (no activation) for regression, one with 3 units and softmax for classification.
Attempts:
2 left
💡 Hint
Regression output usually has 1 unit without activation; classification output uses softmax for multiple classes.
Hyperparameter
advanced
2:00remaining
Choosing loss functions for multi-output models
You have a multi-output model with two outputs: a regression output and a 4-class classification output. Which combination of loss functions is appropriate to compile this model?
A{'regression_output': 'mse', 'classification_output': 'categorical_crossentropy'}
B{'regression_output': 'binary_crossentropy', 'classification_output': 'mse'}
C{'regression_output': 'categorical_crossentropy', 'classification_output': 'mse'}
D{'regression_output': 'mse', 'classification_output': 'binary_crossentropy'}
Attempts:
2 left
💡 Hint
Regression uses mean squared error; multi-class classification uses categorical crossentropy.
🔧 Debug
advanced
2:00remaining
Debugging multi-input model input mismatch error
You defined a TensorFlow model with two inputs: input1 shape (None, 8) and input2 shape (None, 4). When training, you get a ValueError about input shapes not matching. Which of the following is the most likely cause?
AYou used different batch sizes for input1 and input2 arrays.
BYou passed a single numpy array instead of a list or tuple of two arrays as input data.
CYou forgot to compile the model before training.
DYou used a Dense layer instead of Conv2D in the model.
Attempts:
2 left
💡 Hint
Multi-input models expect inputs as a list or tuple matching the input layers.
🧠 Conceptual
expert
2:00remaining
Understanding training metrics in multi-output models
A multi-output model has two outputs: output A (regression) and output B (classification). You compile the model with metrics={'output_A': ['mae'], 'output_B': ['accuracy']}. During training, what will the reported 'accuracy' metric represent?
AThe overall accuracy combining regression and classification outputs.
BThe average accuracy of both outputs A and B.
CThe classification accuracy of output B only.
DThe mean absolute error of output A converted to accuracy.
Attempts:
2 left
💡 Hint
Metrics are reported per output when specified as a dictionary.

Practice

(1/5)
1. What is the main purpose of a multi-input model in TensorFlow?
easy
A. To accept more than one data source at the same time
B. To predict multiple outputs from a single input
C. To train faster using GPU acceleration
D. To reduce the number of layers in the model

Solution

  1. Step 1: Understand multi-input models

    Multi-input models are designed to take multiple data sources as inputs simultaneously.
  2. Step 2: Differentiate from multi-output models

    Multi-output models predict multiple outputs but usually from a single input source.
  3. Final Answer:

    To accept more than one data source at the same time -> Option A
  4. Quick Check:

    Multi-input = multiple data sources [OK]
Hint: Multi-input means many inputs, not many outputs [OK]
Common Mistakes:
  • Confusing multi-input with multi-output
  • Thinking multi-input reduces layers
  • Assuming multi-input speeds training automatically
2. Which of the following is the correct way to define two inputs in a TensorFlow Keras model?
easy
A. inputs = tf.keras.Input(shape=(10, 5))
B. inputs = tf.keras.Input(shape=(10,)), tf.keras.Input(shape=(5,))
C. inputs = [tf.keras.Input(shape=(10,)), tf.keras.Input(shape=(5,))]
D. inputs = tf.keras.Input(shape=(10,)); inputs = tf.keras.Input(shape=(5,))

Solution

  1. Step 1: Recall how to define multiple inputs

    Multiple inputs should be stored as a list of Input layers in Keras.
  2. Step 2: Check each option

    inputs = [tf.keras.Input(shape=(10,)), tf.keras.Input(shape=(5,))] correctly creates a list of two Input layers. inputs = tf.keras.Input(shape=(10,)), tf.keras.Input(shape=(5,)) creates a tuple but does not assign it properly. inputs = tf.keras.Input(shape=(10, 5)) defines a single input with combined shape. inputs = tf.keras.Input(shape=(10,)); inputs = tf.keras.Input(shape=(5,)) overwrites the first input with the second.
  3. Final Answer:

    inputs = [tf.keras.Input(shape=(10,)), tf.keras.Input(shape=(5,))] -> Option C
  4. Quick Check:

    Multiple inputs = list of Input layers [OK]
Hint: Use a list to hold multiple Input layers [OK]
Common Mistakes:
  • Using a tuple instead of a list for inputs
  • Overwriting inputs instead of storing both
  • Combining shapes into one input incorrectly
3. What will be the output shape of the following multi-output model?
input1 = tf.keras.Input(shape=(8,))
input2 = tf.keras.Input(shape=(4,))
x1 = tf.keras.layers.Dense(5)(input1)
x2 = tf.keras.layers.Dense(3)(input2)
output1 = tf.keras.layers.Dense(2)(x1)
output2 = tf.keras.layers.Dense(1)(x2)
model = tf.keras.Model(inputs=[input1, input2], outputs=[output1, output2])
print([o.shape for o in model.outputs])
medium
A. [TensorShape([None, 2]), TensorShape([None, 1])]
B. [TensorShape([8, 2]), TensorShape([4, 1])]
C. [TensorShape([None, 5]), TensorShape([None, 3])]
D. [TensorShape([None, 8]), TensorShape([None, 4])]

Solution

  1. Step 1: Trace output layers shapes

    output1 is Dense(2) applied to x1, so shape is (None, 2). output2 is Dense(1) applied to x2, so shape is (None, 1).
  2. Step 2: Understand batch dimension

    TensorFlow uses None for batch size, so output shapes include None as first dimension.
  3. Final Answer:

    [TensorShape([None, 2]), TensorShape([None, 1])] -> Option A
  4. Quick Check:

    Output shapes match Dense layer units [OK]
Hint: Output shape = batch size null + Dense units [OK]
Common Mistakes:
  • Confusing input shape with output shape
  • Ignoring batch dimension null
  • Mixing intermediate layer shapes with output shapes
4. Identify the error in this multi-output model definition:
input = tf.keras.Input(shape=(10,))
x = tf.keras.layers.Dense(8)(input)
output1 = tf.keras.layers.Dense(4)(x)
output2 = tf.keras.layers.Dense(3)(x)
model = tf.keras.Model(inputs=input, outputs=[output1, output2])
medium
A. inputs should be a list when there are multiple outputs
B. outputs should be a single tensor, not a list
C. inputs must be a list even if only one input exists
D. No error, the model is defined correctly

Solution

  1. Step 1: Check inputs parameter

    inputs can be a single Input layer if there is only one input source.
  2. Step 2: Check outputs parameter

    outputs can be a list of tensors to define multiple outputs.
  3. Final Answer:

    No error, the model is defined correctly -> Option D
  4. Quick Check:

    Single input + multiple outputs = valid model [OK]
Hint: Single input can be passed directly, outputs can be list [OK]
Common Mistakes:
  • Thinking inputs must always be a list
  • Believing outputs cannot be a list
  • Assuming multiple outputs require multiple inputs
5. You want to build a model that takes two inputs: an image (shape 64x64x3) and a vector of 10 features. It should output two predictions: a 5-class classification and a single continuous value. Which is the correct way to define the model inputs and outputs?
hard
A. inputs = [tf.keras.Input(shape=(64,64,3)), tf.keras.Input(shape=(10,))]; outputs = tf.keras.layers.Dense(6)(inputs)
B. inputs = [tf.keras.Input(shape=(64,64,3)), tf.keras.Input(shape=(10,))]; outputs = [tf.keras.layers.Dense(5, activation='softmax')(x), tf.keras.layers.Dense(1)(y)]
C. inputs = tf.keras.Input(shape=(64,64,3)); outputs = [tf.keras.layers.Dense(5)(inputs), tf.keras.layers.Dense(1)(inputs)]
D. inputs = tf.keras.Input(shape=(74,)); outputs = [tf.keras.layers.Dense(5)(inputs), tf.keras.layers.Dense(1)(inputs)]

Solution

  1. Step 1: Define inputs separately for image and vector

    Two inputs require two Input layers with correct shapes: (64,64,3) for image and (10,) for vector.
  2. Step 2: Define outputs separately for classification and regression

    Outputs are two layers: one Dense with 5 units and softmax for classification, one Dense with 1 unit for continuous value.
  3. Final Answer:

    inputs = [tf.keras.Input(shape=(64,64,3)), tf.keras.Input(shape=(10,))]; outputs = [tf.keras.layers.Dense(5, activation='softmax')(x), tf.keras.layers.Dense(1)(y)] -> Option B
  4. Quick Check:

    Separate inputs and outputs for multi-input/output model [OK]
Hint: Match each input and output with separate Input and Dense layers [OK]
Common Mistakes:
  • Combining inputs into one vector incorrectly
  • Using single input for different data types
  • Outputting combined units instead of separate outputs