Een lineair model trainen in batches
In deze oefening trainen we een lineair regressiemodel in batches, voortbouwend op de vorige oefening. We lopen in stappen door de gegevensset en updaten na elke stap de modelvariabelen intercept en slope. Met deze aanpak kun je trainen met gegevenssets die anders te groot zijn om in het geheugen te passen.
Let op: de verliesfunctie loss_function(intercept, slope, targets, features) is al voor je gedefinieerd. Daarnaast is keras geïmporteerd en is numpy beschikbaar als np. Voer de trainbare variabelen in var_list in, in dezelfde volgorde als waarin ze als argumenten van de verliesfunctie voorkomen.
Deze oefening maakt deel uit van de cursus
Introductie tot TensorFlow in Python
Oefeninstructies
- Gebruik de
.Adam()-optimizer. - Laad de data uit
'kc_house_data.csv'in batches met eenchunksizevan 100. - Haal de kolom
priceuitbatch, zet deze om naar eennumpy-array van het type 32-bits float en ken deze toe aanprice_batch. - Maak de verliesfunctie compleet, vul de lijst met trainbare variabelen in en voer de minimisatie uit.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Initialize Adam optimizer
opt = keras.optimizers.____
# Load data in batches
for batch in pd.read_csv('____', ____=____):
size_batch = np.array(batch['sqft_lot'], np.float32)
# Extract the price values for the current batch
price_batch = np.array(batch['____'], np.____)
# Complete the loss, fill in the variable list, and minimize
opt.minimize(lambda: loss_function(____, slope, price_batch, size_batch), var_list=[intercept, ____])
# Print trained parameters
print(intercept.numpy(), slope.numpy())