Oppikaa tekoälyä Pythonilla · Oppitunti

Toistettavuus: siemenluvut, asetukset ja ympäristöt

random.seed(), np.random.seed(), YAML-asetustiedostot ja ympäristön lukitseminen pip freezellä.

Oppitunti 3/413 vaihetta

Toistettavuus: siemenluvut, asetukset ja ympäristöt on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.

Miksi toistettavuus on tärkeää?

Koe, jota ei voi toistaa, ei ole tiedettä. Jos sama koodi tuottaa eri suorituskerroilla erilaisia tuloksia, vertailuihin ei voi luottaa eikä regressioita voi selvittää.

Tekoälytyön toistettavuuden kolme perustaa ovat kiinteät satunnaissiemenet, ulkoistetut asetukset ja lukitut ympäristöt.

Satunnaisuuden lähteet

Satunnaisuutta voi tulla monista paikoista: datan sekoittamisesta, opetus- ja testijaoista, painojen alustamisesta, dropoutista ja augmentoinnista. Kukin näistä voi käyttää eri satunnaislukugeneraattoria.

Suorituksen toistamiseksi jokainen koodin käyttämä generaattori on alustettava siemenellä.

Pythonin ja NumPyn siementäminen

Asettakaa standardikirjaston ja NumPyn generaattoreille sama ennalta valittu siemen. 42 on yleinen käytäntö.

import random
import numpy as np

random.seed(42)
np.random.seed(42)

Kehysten siementen alustaminen

ML-kehyksillä on omat generaattorinsa. Alustakaa myös niiden siemenet ja välittäkää siemen funktioille, jotka hyväksyvät random_state-parametrin.

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 learning

set_seed-apufunktio

Kootkaa kaikki siementen alustukset yhteen funktioon ja kutsukaa sitä jokaisen skriptin alussa – näin yksikään generaattori ei unohdu.

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)

Koodiin kovakoodatut hyperparametrit ovat ansa

Arvojen 0.01, 200 ja 0.2 ripotteleminen koodiin vaikeuttaa ajojen seuraamista ja muuttamista. Oliko parhaiten pisteitä saaneessa ajossa oppimisnopeus 0.01 vai 0.001?

Ratkaisu: sijoittakaa kaikki hyperparametrit asetustiedostoon, ei koodiin.

YAML-asetustiedostot

YAML on ihmisluettava muoto, joka sopii erinomaisesti asetuksiin. Yksi tiedosto sisältää kaikki yhden ajon säädettävät asetukset.

# config.yaml
seed: 42
model:
  name: random_forest
  n_estimators: 200
  max_depth: 8
training:
  test_size: 0.2
data:
  path: data/processed/train.csv

YAML-tiedostojen lukeminen PyYAML-kirjastolla

Ladatkaa asetukset skriptin alussa PyYAML-kirjastolla. Nyt koodinne lukee arvot cfg-muuttujasta sen sijaan, että ne olisi kovakoodattu.

import yaml

with open("config.yaml") as f:
    cfg = yaml.safe_load(f)

print(cfg["model"]["n_estimators"])   # 200
set_seed(cfg["seed"])

Asetusten välittäminen koodiin

Funktiot saavat asetukset tai niiden arvot argumentteina. Uuden kokeen suorittamiseksi muutatte YAML-tiedostoa, ette Python-koodia.

from sklearn.ensemble import RandomForestClassifier

m = cfg["model"]
model = RandomForestClassifier(
    n_estimators=m["n_estimators"],
    max_depth=m["max_depth"],
    random_state=cfg["seed"],
)

Ympäristön versioiden lukitseminen

Kirjastojen eri versiot tuottavat erilaisia tuloksia. Lukitkaa täsmälliset versiot, jotta muut ja tulevaisuuden minänne asentavat saman ohjelmistopinon.

# requirements.txt with pinned versions
pandas==2.2.0
scikit-learn==1.4.0
numpy==1.26.4

# generate it with:
# pip freeze > requirements.txt

Virtuaaliympäristöt

Eristäkää kukin projekti omaan ympäristöönsä, jotta sen lukitut versiot eivät ole ristiriidassa muiden projektien kanssa. Luokaa virtuaaliympäristö, aktivoikaa se ja asentakaa paketit sitten lukitusta tiedostosta.

python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt

Pikatarkistus: hyperparametrit

Haluatte kokeilla kymmentä erilaista hyperparametriyhdistelmää ja pitää jokaisen ajon toistettavana ja jäljitettävänä.

Kertaus: toistettavuus

Opitte toistettavan tekoälyn kolme peruspilaria:

  • Siemenet: random.seed(42), np.random.seed(42), kehysten siemenet ja random_state
  • Asetukset: kaikki hyperparametrit tiedostossa config.yaml, joka ladataan PyYAML-kirjastolla
  • Ympäristöt: lukittu requirements.txt virtuaaliympäristössä

Muuttakaa asetuksia, älkää koodia. Seuraavaksi: Jupyter-muistikirjojen parhaat käytännöt.

Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
53
Oppitunnit
225

Usein kysytyt kysymykset

Onko oppitunti ”Toistettavuus: siemenluvut, asetukset ja ympäristöt” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Toistettavuus: siemenluvut, asetukset ja ympäristöt”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Toistettavuus: siemenluvut, asetukset ja ympäristöt”?

random.seed(), np.random.seed(), YAML-asetustiedostot ja ympäristön lukitseminen pip freezellä. Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Toistettavuus: siemenluvut, asetukset ja ympäristöt”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Oppikaa tekoälyä Pythonilla-oppitunnilla?

Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Ammattimaisen tekoälyprojektin hakemistorakenne
  2. Git tekoälyprojekteissa
  3. Toistettavuus: siemenluvut, asetukset ja ympäristöt
  4. Jupyter Notebookien parhaat käytännöt
← Takaisin: Oppikaa tekoälyä Pythonilla