Bird
Raised Fist0
TensorFlowml~10 mins

Functional API basics 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 create an input layer with shape (28, 28).

TensorFlow
inputs = tf.keras.Input(shape=[1])
Drag options to blanks, or click blank then click option'
A(28, 28)
B28
C[28, 28]
D(784,)
Attempts:
3 left
💡 Hint
Common Mistakes
Using a list instead of a tuple for shape.
Specifying the total number of pixels instead of the shape tuple.
2fill in blank
medium

Complete the code to add a Dense layer with 64 units and ReLU activation.

TensorFlow
x = tf.keras.layers.Dense([1], activation='relu')(inputs)
Drag options to blanks, or click blank then click option'
A128
B64
C32
D10
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing the wrong number of units.
Confusing activation function with units.
3fill in blank
hard

Fix the error in the code to create the model using the Functional API.

TensorFlow
model = tf.keras.Model(inputs=[1], outputs=x)
Drag options to blanks, or click blank then click option'
Aoutputs
Bx
Cmodel
Dinputs
Attempts:
3 left
💡 Hint
Common Mistakes
Passing the output tensor as inputs.
Passing the model variable itself.
4fill in blank
hard

Fill both blanks to flatten the input and add a Dense layer with 10 units.

TensorFlow
x = tf.keras.layers.[1]()(inputs)
x = tf.keras.layers.Dense([2])(x)
Drag options to blanks, or click blank then click option'
AFlatten
B10
CDense
D64
Attempts:
3 left
💡 Hint
Common Mistakes
Using Dense instead of Flatten for the first layer.
Choosing wrong number of units for the Dense layer.
5fill in blank
hard

Fill all three blanks to compile the model with Adam optimizer, sparse categorical crossentropy loss, and accuracy metric.

TensorFlow
model.compile(optimizer='[1]', loss='[2]', metrics=['[3]'])
Drag options to blanks, or click blank then click option'
Aadam
Bsparse_categorical_crossentropy
Caccuracy
Dsgd
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong optimizer like 'sgd' when 'adam' is expected.
Using categorical_crossentropy instead of sparse_categorical_crossentropy.
Forgetting to include accuracy metric.

Practice

(1/5)
1. What is the main advantage of using TensorFlow's Functional API over the Sequential API?
easy
A. It allows building models with multiple inputs and outputs.
B. It automatically tunes hyperparameters.
C. It requires less code to build simple models.
D. It only supports linear stacks of layers.

Solution

  1. Step 1: Understand Functional API capabilities

    The Functional API allows explicit connections between layers, supporting complex architectures.
  2. Step 2: Compare with Sequential API

    Sequential API only supports simple linear stacks, while Functional API supports multiple inputs and outputs.
  3. Final Answer:

    It allows building models with multiple inputs and outputs. -> Option A
  4. Quick Check:

    Functional API = multiple inputs/outputs [OK]
Hint: Functional API supports complex models with multiple inputs/outputs [OK]
Common Mistakes:
  • Thinking Functional API is simpler for linear models
  • Confusing hyperparameter tuning with model building
  • Assuming Sequential API supports multiple inputs
2. Which of the following is the correct way to start defining a model using the Functional API?
easy
A. inputs = tf.keras.Input(shape=(32,))
B. inputs = tf.keras.layers.Dense(32)
C. model = tf.keras.Model()
D. model = tf.keras.Sequential()

Solution

  1. Step 1: Identify how to define input in Functional API

    Functional API starts with tf.keras.Input() to define the input shape.
  2. Step 2: Check other options

    Sequential() is for Sequential API, Model() requires inputs and outputs, Dense is a layer, not input.
  3. Final Answer:

    inputs = tf.keras.Input(shape=(32,)) -> Option A
  4. Quick Check:

    Start Functional API with Input() [OK]
Hint: Use Input() to start Functional API models [OK]
Common Mistakes:
  • Using Sequential() instead of Input() to start
  • Trying to create Model() without inputs and outputs
  • Confusing layers with input definitions
3. What will be the output shape of the model defined below?
inputs = tf.keras.Input(shape=(10,))
x = tf.keras.layers.Dense(5)(inputs)
outputs = tf.keras.layers.Dense(2)(x)
model = tf.keras.Model(inputs, outputs)
print(model.output_shape)
medium
A. (None, 10)
B. (10, 2)
C. (None, 5)
D. (None, 2)

Solution

  1. Step 1: Trace the model layers

    Input shape is (10,), first Dense layer outputs (5,), second Dense outputs (2,).
  2. Step 2: Understand output shape format

    Output shape includes batch size None, so final output shape is (None, 2).
  3. Final Answer:

    (None, 2) -> Option D
  4. Quick Check:

    Output shape = (None, 2) [OK]
Hint: Output shape matches last layer units with batch None [OK]
Common Mistakes:
  • Confusing input shape with output shape
  • Ignoring batch dimension None
  • Mixing layer output sizes
4. Identify the error in this Functional API model code:
inputs = tf.keras.Input(shape=(8,))
x = tf.keras.layers.Dense(4)(inputs)
outputs = tf.keras.layers.Dense(1)(inputs)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
medium
A. Input shape must be (4,), not (8,).
B. Output layer should connect to x, not inputs.
C. Model() requires no arguments.
D. Dense layers cannot be used in Functional API.

Solution

  1. Step 1: Check layer connections

    The output layer is connected directly to inputs, skipping the intermediate Dense layer x.
  2. Step 2: Correct the output connection

    Output should connect to x to use the transformed data, not inputs.
  3. Final Answer:

    Output layer should connect to x, not inputs. -> Option B
  4. Quick Check:

    Output must connect to last layer, not input [OK]
Hint: Connect outputs to last layer, not inputs [OK]
Common Mistakes:
  • Connecting output directly to inputs
  • Changing input shape unnecessarily
  • Misunderstanding Model() arguments
5. You want to build a model with two inputs: one for images (shape 64x64x3) and one for metadata (shape 10). Which Functional API code snippet correctly defines the inputs?
hard
A. img_input = tf.keras.layers.Input(shape=(64,64,3)) meta_input = tf.keras.layers.Input(shape=(10,))
B. inputs = tf.keras.Input(shape=(64,64,3,10))
C. img_input = tf.keras.Input(shape=(64,64,3)) meta_input = tf.keras.Input(shape=(10,))
D. inputs = tf.keras.Input(shape=(64,64,3)) inputs = tf.keras.Input(shape=(10,))

Solution

  1. Step 1: Define separate inputs for each data type

    Functional API allows multiple inputs by defining each with tf.keras.Input and correct shapes.
  2. Step 2: Check each option for correctness

    img_input = tf.keras.Input(shape=(64,64,3)) meta_input = tf.keras.Input(shape=(10,)) correctly defines two inputs separately; B merges shapes incorrectly; A uses wrong module; D overwrites inputs variable.
  3. Final Answer:

    img_input = tf.keras.Input(shape=(64,64,3)) meta_input = tf.keras.Input(shape=(10,)) -> Option C
  4. Quick Check:

    Multiple inputs need separate Input() calls [OK]
Hint: Use separate Input() for each input tensor [OK]
Common Mistakes:
  • Combining input shapes incorrectly
  • Using layers.Input instead of keras.Input
  • Overwriting input variables