Reproduserbarhet: seeds, konfigurasjoner og miljøer
random.seed(), np.random.seed(), YAML-konfigurasjonsfiler og låsing av miljøet med pip freeze.
Reproduserbarhet: seeds, konfigurasjoner og miljøer er en gratis leksjon i Lær AI med Python på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lær AI med Python, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Hvorfor reproduserbarhet?
Et eksperiment du ikke kan reprodusere, er ikke vitenskap. Hvis den samme koden gir forskjellige resultater når den kjøres to ganger, kan du ikke stole på sammenligninger eller feilsøke regresjoner.
Tre grunnpilarer gjør AI-arbeid reproduserbart: faste random seeds, eksterne konfigurasjoner og låste miljøer.
Kilder til tilfeldighet
Tilfeldighet kan snike seg inn fra mange steder: stokking av data, trenings-/testoppdelinger, initialisering av vekter, dropout og dataaugmentering. Hver av dem kan bruke en egen tilfeldig tallgenerator.
For å reprodusere en kjøring må du angi seed for hver generator koden din bruker.
Angi seed for Python og NumPy
Fastsett generatorene i standardbiblioteket og NumPy med én valgt seed (42 er en vanlig konvensjon).
import random
import numpy as np
random.seed(42)
np.random.seed(42)Rammeverk for seed-initialisering
ML-rammeverk har egne generatorer. Initialiser også disse med seed, og send seed-verdien til funksjoner som godtar random_state.
import numpy as np
from sklearn.model_selection import train_test_split
X_train, X_test = train_test_split(X, test_size=0.2, random_state=42)
# torch.manual_seed(42) / tf.random.set_seed(42) for deep learningEn set_seed-hjelpefunksjon
Samle all seed-initialisering i én funksjon, og kall den øverst i hvert skript – slik at ingen generatorer blir glemt.
import random, os
import numpy as np
def set_seed(seed=42):
random.seed(seed)
np.random.seed(seed)
os.environ["PYTHONHASHSEED"] = str(seed)
set_seed(42)Hardkodede hyperparametre er en felle
Når 0.01, 200 og 0.2 er spredt rundt i koden, blir kjøringer vanskelige å spore og endre. Var læringsraten 0.01 eller 0.001 i kjøringen som fikk best resultat?
Løsningen er å legge alle hyperparametre i en konfigurasjonsfil, ikke i koden.
YAML-konfigurasjonsfiler
YAML er et menneskelesbart format som egner seg godt til konfigurasjoner. Én fil samler alle innstillingene for en kjøring.
# config.yaml
seed: 42
model:
name: random_forest
n_estimators: 200
max_depth: 8
training:
test_size: 0.2
data:
path: data/processed/train.csvLese YAML med PyYAML
Last inn konfigurasjonen i starten av skriptet med PyYAML. Nå leser koden verdier fra cfg i stedet for å hardkode dem.
import yaml
with open("config.yaml") as f:
cfg = yaml.safe_load(f)
print(cfg["model"]["n_estimators"]) # 200
set_seed(cfg["seed"])Sende konfigurasjonen inn i koden
Funksjoner tar konfigurasjonen, eller verdiene fra den, som argumenter. For å kjøre et nytt eksperiment endrer De YAML-filen, ikke Python-koden.
from sklearn.ensemble import RandomForestClassifier
m = cfg["model"]
model = RandomForestClassifier(
n_estimators=m["n_estimators"],
max_depth=m["max_depth"],
random_state=cfg["seed"],
)Fastlåse miljøet
Ulike bibliotekversjoner kan gi ulike resultater. Fastlås eksakte versjoner slik at andre, og De selv i fremtiden, installerer den samme stakken.
# requirements.txt with pinned versions
pandas==2.2.0
scikit-learn==1.4.0
numpy==1.26.4
# generate it with:
# pip freeze > requirements.txtVirtuelle miljøer
Isoler hvert prosjekt slik at de fastlåste versjonene ikke kommer i konflikt med andre prosjekter. Opprett og aktiver et virtuelt miljø, og installer deretter fra den fastlåste filen.
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txtHurtigsjekk: Hyperparametre
De vil prøve ti ulike kombinasjoner av hyperparametre og sørge for at hver kjøring er reproduserbar og sporbar.
Oppsummering: Reproduserbarhet
De har lært de tre grunnpilarene for reproduserbar KI:
- Seed-verdier:
random.seed(42),np.random.seed(42), seeds i rammeverk ograndom_state - Konfigurasjoner: alle hyperparametre i
config.yaml, lastet inn med PyYAML - Miljøer: fastlåst
requirements.txti et virtuelt miljø
Endre konfigurasjonen, ikke koden. Neste tema: beste praksis for Jupyter-notatbøker.
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 53
- Leksjoner
- 225
Ofte stilte spørsmål
Er leksjonen «Reproduserbarhet: seeds, konfigurasjoner og miljøer» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lær AI med Python, inkludert «Reproduserbarhet: seeds, konfigurasjoner og miljøer», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Hva lærer jeg i «Reproduserbarhet: seeds, konfigurasjoner og miljøer»?
random.seed(), np.random.seed(), YAML-konfigurasjonsfiler og låsing av miljøet med pip freeze. Du øver på Lær AI med Python med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Lær AI med Python?
Ingen tidligere erfaring er nødvendig. Lær AI med Python på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Reproduserbarhet: seeds, konfigurasjoner og miljøer»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Lær AI med Python-leksjonen?
Ja. Alle Lær AI med Python-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Profesjonell katalogstruktur for KI-prosjekter
- Git for KI-prosjekter
- Reproduserbarhet: seeds, konfigurasjoner og miljøer
- Beste praksis for Jupyter Notebooks