Bird
Raised Fist0
TensorFlowml~10 mins

Multi-input and multi-output models in TensorFlow - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define two input layers for a multi-input model.

TensorFlow
input1 = tf.keras.Input(shape=[1])
input2 = tf.keras.Input(shape=(10,))
Drag options to blanks, or click blank then click option'
ANone
B32
C[32]
D(32,)
Attempts:
3 left
💡 Hint
Common Mistakes
Using an integer instead of a tuple for input shape.
Using a list instead of a tuple for input shape.
2fill in blank
medium

Complete the code to concatenate two input tensors in the model.

TensorFlow
concat = tf.keras.layers.Concatenate()([input1, [1]])
Drag options to blanks, or click blank then click option'
Ainput2
Binput3
Cinputs
Dinput_2
Attempts:
3 left
💡 Hint
Common Mistakes
Using an undefined variable name.
Using a string instead of a tensor variable.
3fill in blank
hard

Fix the error in the model output definition by selecting the correct output layer.

TensorFlow
output1 = tf.keras.layers.Dense(1, activation='sigmoid')([1])
output2 = tf.keras.layers.Dense(10, activation='softmax')(dense2)
Drag options to blanks, or click blank then click option'
Ainput2
Binput1
Cconcat
Ddense1
Attempts:
3 left
💡 Hint
Common Mistakes
Passing input layers directly to output layers.
Passing unrelated layer outputs.
4fill in blank
hard

Fill both blanks to compile the multi-output model with appropriate loss functions and metrics.

TensorFlow
model.compile(optimizer='adam', loss=[1], metrics=[2])
Drag options to blanks, or click blank then click option'
A{'output1': 'binary_crossentropy', 'output2': 'categorical_crossentropy'}
B['mse', 'mae']
C{'output1': ['accuracy'], 'output2': ['accuracy']}
D['accuracy', 'accuracy']
Attempts:
3 left
💡 Hint
Common Mistakes
Using lists instead of dictionaries for losses and metrics.
Not matching output names in loss and metrics.
5fill in blank
hard

Fill all three blanks to create a multi-input, multi-output model with correct inputs, outputs, and model definition.

TensorFlow
input_a = tf.keras.Input(shape=[1])
input_b = tf.keras.Input(shape=[2])
model = tf.keras.Model(inputs=[input_a, input_b], outputs=[3])
Drag options to blanks, or click blank then click option'
A(64,)
B(10,)
C[output1, output2]
D(32,)
Attempts:
3 left
💡 Hint
Common Mistakes
Using integers instead of tuples for input shapes.
Passing outputs as a tuple instead of a list.

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