Ontwikkel een TensorFlow Model voor Geautomatiseerde Hyperparameterafstemming
description
Maakt systematische verkenning van hyperparameters mogelijk om modelnauwkeurigheid en efficiëntie te verbeteren; vermindert handmatig proberen en fouten; ondersteunt verschillende afstemmingsstrategieën aangepast aan de behoeften van de gebruiker, waardoor modelontwikkeling sneller en betrouwbaarder wordt.
prompt
Help me een geautomatiseerde workflow voor hyperparameterafstemming te ontwikkelen voor mijn TensorFlow-model. Modelbeschrijving: <voer een samenvatting in van je TensorFlow-modelarchitectuur of code> Datasetinformatie: <beschrijf de dataset die je gebruikt voor training> Hyperparameters om af te stemmen: <noem de belangrijke hyperparameters die je wilt optimalis ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
no_answer_for_language
error: Generation failed [openai] prompt_id=3702 locale=nl err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3702 locale=en err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3702 locale=de err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3702 locale=fr err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3702 locale=pt err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3702 locale=es err=OpenAI connection/timeout | Generation failed [openai] prompt_id=3702 locale=zh err=OpenAI connection/timeout
provider: deepseek
model: deepseek-chat
Ik zal je helpen een geautomatiseerde workflow voor hyperparameterafstemming te ontwikkelen met grid search voor je CNN-model op de CIFAR-10 dataset.
## Workflow voor Hyperparameterafstemming
```python
import tensorflow as tf
from tensorflow.keras import datasets, layers, models
from sklearn.model_selection import ParameterGrid
import numpy as np
import time
import json
# Laad en prepareer CIFAR-10 dataset
(x_train, y_train), (x_test, y_test) = datasets.cifar10.load_data()
# Normaliseer pixelwaarden
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255
# Converteer labels naar one-hot encoding
y_train = tf.keras.utils.to_categorical(y_train, 10)
y_test = tf.keras.utils.to_categorical(y_test, 10)
def create_model(learning_rate):
model = models.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.Flatten(),
layers.Dense(64, activation='relu'),
layers.Dense(10, activation='softmax')
])
optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate)
model.compile(optimizer=optimizer,
loss='categorical_crossentropy',
metrics=['accuracy'])
return model
# Definieer hyperparameter grid
param_grid = {
'learning_rate': [0.001, 0.0005, 0.0001],
'batch_size': [32, 64, 128],
'epochs': [20, 30, 40]
}
# Grid search implementatie
def run_grid_search():
start_time = time.time()
results = []
best_accuracy = 0
best_params = {}
# Maak alle parametercombinaties
grid = ParameterGrid(param_grid)
total_combinations = len(grid)
print(f"Totaal aantal combinaties: {total_combinations}")
for i, params in enumerate(grid):
elapsed_time = time.time() - start_time
if elapsed_time > 86400: # 24 uur in seconden
print("Tijdslimiet van 24 uur bereikt")
break
print(f"\nUitvoeren combinatie {i+1}/{total_combinations}")
print(f"Parameters: {params}")
# Train model
model = create_model(params['learning_rate'])
history = model.fit(x_train, y_train,
batch_size=params['batch_size'],
epochs=params['epochs'],
validation_data=(x_test, y_test),
verbose=0)
# Evalueer model
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=0)
# Sla resultaten op
result = {
'parameters': params,
'test_accuracy': test_acc,
'test_loss': test_loss,
'training_time': elapsed_time
}
results.append(result)
if test_acc > best_accuracy:
best_accuracy = test_acc
best_params = params
print(f"Test accuracy: {test_acc:.4f}, Beste accuracy: {best_accuracy:.4f}")
return results, best_params, best_accuracy
# Voer grid search uit
results, best_params, best_accuracy = run_grid_search()
# Sla resultaten op
with open('grid_search_results.json', 'w') as f:
json.dump(results, f, indent=4)
print(f"\nBeste parameters: {best_params}")
print(f"Beste accuracy: {best_accuracy:.4f}")
# Train final model met beste parameters
print("\nTraining final model met beste parameters...")
final_model = create_model(best_params['learning_rate'])
final_model.fit(x_train, y_train,
batch_size=best_params['batch_size'],
epochs=best_params['epochs'],
validation_data=(x_test, y_test))
# Sla final model op
final_model.save('best_cifar10_cnn_model.h5')
```
## Optimalisaties voor Tijdsbeperking:
1. **Vroege stopping**: Voeg callback toe om training te stoppen bij plateau
2. **Dataset subset**: Gebruik subset voor snellere iteraties
3. **Parallelle uitvoering**: Overweeg `multiprocessing` voor parallelle runs
```python
# Voor vroege stopping
early_stopping = tf.keras.callbacks.EarlyStopping(
monitor='val_loss',
patience=5,
restore_best_weights=True
)
```
## Aanbevelingen:
1. **Monitor progressie**: Houd tijd per combinatie bij
2. **Checkpointing**: Sla tussenresultaten regelmatig op
3. **Resource monitoring**: Houd GPU/CPU gebruik in de gaten
Deze workflow zou binnen 24 uur moeten passen gezien de beperkte grid size en CIFAR-10 dataset grootte.