Oppikaa tekoälyä Pythonilla · Oppitunti

Broadcasting ja vektoroidut operaatiot

Miten broadcasting toimii, alkiokohtaiset operaatiot ja silmukoiden välttäminen vektoroinnilla.

Oppitunti 3/413 vaihetta

Broadcasting ja vektoroidut operaatiot 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 vektoroida?

NumPy käsittelee kokonaisia taulukoita C:n nopeudella. Python-silmukoiden korvaaminen taulukkolausekkeilla, eli vektorointi, on usein 10–100 kertaa nopeampaa.

Elementtikohtaiset operaatiot

Aritmeettiset operaattorit kohdistuvat alkioihin yksi kerrallaan, kun taulukoiden muodot täsmäävät. Erillistä silmukkaa ei tarvita.

import numpy as np
a = np.array([1, 2, 3])
b = np.array([10, 20, 30])
print(a + b)   # [11 22 33]
print(a * b)   # [10 40 90]

Skalaarin broadcasting

Taulukon ja skalaarin välinen operaatio kohdistaa skalaarin jokaiseen alkioon. Skalaari siis "broadcastataan" koko taulukon yli.

a = np.array([1, 2, 3, 4])
print(a * 10)   # [10 20 30 40]
print(a + 100)  # [101 102 103 104]

Mitä broadcasting tarkoittaa?

Broadcasting antaa NumPyn yhdistää erimuotoisia taulukoita venyttämällä pienempää näennäisesti ilman muistin kopiointia.

Broadcasting-sääntö

Muotoja verrataan viimeisestä eli oikeanpuolimmaisesta ulottuvuudesta alkaen. Kaksi ulottuvuutta ovat yhteensopivia, kun ne ovat yhtä suuria tai toinen niistä on 1. Kokoa 1 oleva ulottuvuus venytetään vastaamaan toista.

# (3, 4) with (4,)   -> compatible (trailing 4 matches)
# (3, 4) with (3, 1)  -> compatible (1 stretches to 4)
# (3, 4) with (3,)    -> ERROR (trailing 4 vs 3)

Rivivektorin broadcasting

Sarakkeiden lukumäärän pituinen 1D-taulukko lisätään jokaiselle riville.

m = np.array([[1, 2, 3], [4, 5, 6]])
row = np.array([10, 20, 30])
print(m + row)
# [[11 22 33]
#  [14 25 36]]

Sarakevektorin broadcasting

Muotoilkaa vektori sarakkeeksi (muoto (n,1)), jotta se broadcastautuu sarakkeiden yli rivien sijaan.

col = np.array([[100], [200]])   # shape (2, 1)
print(m + col)
# [[101 102 103]
#  [204 205 206]]

Tietojen keskittäminen (käytännön esimerkki)

Jokaisen sarakkeen oman keskiarvon vähentäminen keskittää kunkin piirteen. Tämä on yleinen esikäsittelyvaihe, joka tehdään yhdellä broadcasting-rivillä.

data = np.array([[1.0, 10.0], [2.0, 20.0], [3.0, 30.0]])
centered = data - data.mean(axis=0)
print(centered)
# columns now have mean 0

Yleiskäyttöiset funktiot (ufuncit)

NumPy sisältää nopeita elementtikohtaisia matemaattisia funktioita, joita kutsutaan ufunceiksi: np.sqrt, np.log, np.exp ja monia muita. Ne ovat vektoroituja ja huomioivat broadcastingin.

a = np.array([1.0, 4.0, 9.0, 16.0])
print(np.sqrt(a))   # [1. 2. 3. 4.]
print(np.log(a))    # natural log of each element
print(np.exp([0, 1]))  # [1.        2.71828183]

Silmukan ja vektoroinnin nopeus

Sama laskutoimitus on vektoroituna huomattavasti nopeampi. Käyttäkää %timeit-komentoa huomataksenne eron miljoonan alkion taulukolla.

big = np.arange(1000000, dtype=float)
# Slow Python loop:
# %timeit [x*x for x in big]
# Fast vectorized:
%timeit big * big   # typically tens of times faster

Vektoroinnin yhdistäminen

Ketjuttakaa ufunc-funktioita ja aritmeettisia operaatioita, jotta voitte ilmaista kaavat suoraan. Tässä lasketaan Gaussin käyrä ilman silmukoita.

x = np.linspace(-3, 3, 7)
y = np.exp(-x**2 / 2)
print(np.round(y, 3))

Pikakoe

Testatkaa broadcastingin ymmärtämistänne.

Kertaus

Vektoroinnin perusteet:

  • Elementtikohtaiset operaatiot välttävät Python-silmukat ja suoritetaan C:n nopeudella
  • Broadcasting sovittaa yhteen oikeanpuolimmaiset ulottuvuudet; kokojen on täsmättävä tai oltava 1
  • Käyttäkää sarakevektoreita (n,1), kun haluatte broadcastata sarakkeiden suuntaan
  • ufuncit: np.sqrt, np.log, np.exp
  • Keskittäkää tiedot muodolla data - data.mean(axis=0)
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 ”Broadcasting ja vektoroidut operaatiot” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Broadcasting ja vektoroidut operaatiot”. 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 ”Broadcasting ja vektoroidut operaatiot”?

Miten broadcasting toimii, alkiokohtaiset operaatiot ja silmukoiden välttäminen vektoroinnilla. 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 ”Broadcasting ja vektoroidut operaatiot”-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. Taulukoiden luominen ja ominaisuudet
  2. Indeksointi, viipalointi ja fancy-indeksointi
  3. Broadcasting ja vektoroidut operaatiot
  4. Lineaarialgebra NumPyllä
← Takaisin: Oppikaa tekoälyä Pythonilla