This program creates a small model, trains it on simple data, and shows how weights change after training.
TensorFlow
import tensorflow as tf
from tensorflow.keras import layers, models
# Create simple model
model = models.Sequential([
layers.Dense(5, activation='relu', input_shape=(3,)),
layers.Dense(2, activation='softmax')
])
# Compile model with optimizer and loss
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# Sample training data (4 samples, 3 features each)
x_train = tf.constant([[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0],
[7.0, 8.0, 9.0],
[10.0, 11.0, 12.0]])
# Labels for 2 classes
y_train = tf.constant([0, 1, 0, 1])
# Train model for 5 epochs
history = model.fit(x_train, y_train, epochs=5, verbose=2)
# Show final weights of first layer
weights = model.layers[0].get_weights()[0]
print('First layer weights after training:')
print(weights)
OutputSuccess
Important Notes
Training changes weights step by step to reduce errors.
Optimizer decides how weights update during training.
Loss measures how far predictions are from true answers.
Summary
Training updates model weights to improve predictions.
Weights start random and get better by learning from data.
Optimizers and loss guide how weights change during training.
Practice
(1/5)
1. Why does training a TensorFlow model update its weights?
easy
A. To reduce the difference between predicted and actual values
B. To increase the size of the model
C. To make the code run faster
D. To change the input data
Solution
Step 1: Understand the purpose of training
Training adjusts model weights to make predictions closer to actual results.
Step 2: Connect weight updates to prediction accuracy
By changing weights, the model reduces errors between predicted and true values.
Final Answer:
To reduce the difference between predicted and actual values -> Option A
Quick Check:
Training improves predictions = B [OK]
Hint: Training improves predictions by adjusting weights [OK]
Common Mistakes:
Thinking training changes input data
Believing training makes code faster
Assuming training increases model size
2. Which TensorFlow code snippet correctly applies an optimizer to update model weights during training?
easy
A. tf.Variable(0.1)
B. model.compile(optimizer='adam', loss='mse')
C. model.fit(x_train, y_train, epochs=10)
D. optimizer.apply_gradients(zip(grads, model.trainable_variables))
Solution
Step 1: Identify optimizer usage for weight updates
The method apply_gradients directly updates weights using gradients.
Step 2: Differentiate from other code snippets
compile sets training config, fit runs training loop, and tf.Variable creates variables but does not update weights.
Final Answer:
optimizer.apply_gradients(zip(grads, model.trainable_variables)) -> Option D
3. Given this TensorFlow training step code, what will be printed?
import tensorflow as tf
model = tf.keras.Sequential([tf.keras.layers.Dense(1)])
optimizer = tf.keras.optimizers.SGD(learning_rate=0.1)
x = tf.constant([[1.0]])
y = tf.constant([[2.0]])
with tf.GradientTape() as tape:
prediction = model(x)
loss = tf.reduce_mean((y - prediction) ** 2)
grads = tape.gradient(loss, model.trainable_variables)
optimizer.apply_gradients(zip(grads, model.trainable_variables))
print(loss.numpy())
medium
A. A negative number
B. Zero
C. A positive number close to 1.0
D. An error because of missing input
Solution
Step 1: Understand the loss calculation
Loss is mean squared error between prediction and target; initially weights are random, so loss is positive.
Step 2: Check if loss can be zero or negative
Loss is squared difference, so cannot be negative or zero at first step.
Final Answer:
A positive number close to 1.0 -> Option C
Quick Check:
Initial loss positive ~1.0 = A [OK]
Hint: Initial loss is positive because weights start random [OK]
Common Mistakes:
Expecting zero loss before training
Thinking loss can be negative
Assuming code throws error
4. This TensorFlow code tries to update model weights but does not change them. What is the error?
import tensorflow as tf
model = tf.keras.Sequential([tf.keras.layers.Dense(1)])
optimizer = tf.keras.optimizers.Adam(learning_rate=0.01)
x = tf.constant([[1.0]])
y = tf.constant([[2.0]])
with tf.GradientTape() as tape:
prediction = model(x)
loss = tf.reduce_mean((y - prediction) ** 2)
grads = tape.gradient(loss, model.trainable_variables)
# Missing apply_gradients call here
print(model.trainable_variables[0].numpy())
medium
A. The optimizer is not applied to update weights
B. GradientTape is used incorrectly
C. Loss calculation is wrong
D. Model layers are not defined
Solution
Step 1: Check if optimizer updates weights
The code calculates gradients but never calls apply_gradients, so weights stay the same.
Step 2: Verify other parts are correct
GradientTape and loss calculation are correct; model layers exist.
Final Answer:
The optimizer is not applied to update weights -> Option A
Quick Check:
Missing apply_gradients means no weight update = C [OK]
Hint: Always call apply_gradients to update weights [OK]
Common Mistakes:
Forgetting to apply gradients
Thinking GradientTape updates weights
Assuming loss error stops training
5. You want to train a TensorFlow model to predict house prices. Why is it important that the training process updates the model's weights using an optimizer and loss function?
hard
A. Because updating weights makes the training run faster without changing predictions
B. Because updating weights helps the model learn patterns from data to make better predictions
C. Because updating weights changes the input features to match the output
D. Because updating weights increases the model size to handle more data
Solution
Step 1: Understand the role of weights in prediction
Weights control how input features affect the output prediction in the model.
Step 2: Explain why updating weights matters
Updating weights using optimizer and loss reduces prediction errors by learning from data patterns.
Step 3: Eliminate incorrect options
Weights do not increase model size, change inputs, or only speed training without improving predictions.
Final Answer:
Because updating weights helps the model learn patterns from data to make better predictions -> Option B
Quick Check:
Weight updates improve prediction accuracy = D [OK]
Hint: Weights learn data patterns to improve predictions [OK]
Common Mistakes:
Confusing weight updates with input changes
Thinking weight updates increase model size
Believing weight updates only speed training
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.