slogan3

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

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.