Table of Contents[Ferstopje][Toanje]
Yn 'e ôfrûne jierren binne neurale netwurken yn populariteit groeid, om't se ekstreem goed hawwe sjen litten yn in breed skala oan taken.
It is oantoand dat se in geweldige kar binne foar byld- en audioherkenning, natuerlike taalferwurking, en sels it spieljen fan yngewikkelde spultsjes lykas Go en skaken.
Yn dizze post sil ik jo liede troch it heule proses fan it trainen fan in neural netwurk. Ik sil alle stappen neame en útlizze om in neural netwurk te trenen.
Wylst ik de stappen sil gean, wol ik in ienfâldich foarbyld tafoegje om te soargjen dat d'r ek in praktysk foarbyld is.
Dat, kom mei, en lit ús leare hoe't jo neurale netwurken kinne ferwurkje
Litte wy ienfâldich begjinne en freegje wat binne neurale netwurken op it earste plak.
Wat binne neurale netwurken krekt?
Neurale netwurken binne kompjûtersoftware dy't de wurking fan it minsklik brein simulearret. Se kinne leare fan grutte hoemannichten gegevens en spotpatroanen dy't minsken miskien dreech fine om te ûntdekken.
Neurale netwurken binne de lêste jierren yn populariteit groeid fanwegen har veelzijdigheid yn taken lykas byld- en audio-erkenning, natuerlike taalferwurking, en foarsizzend modellering.
Oer it algemien binne neurale netwurken in sterk ark foar in breed skala oan tapassingen en hawwe in kâns om te transformearjen de manier wêrop wy in breed oanbod fan banen benaderje.
Wêrom soene wy oer har moatte witte?
Neurale netwurken begripe is kritysk, om't se hawwe laat ta ûntdekkingen op in ferskaat oan fjilden, ynklusyf kompjûterfisy, spraakherkenning en natuerlike taalferwurking.
Neurale netwurken, bygelyks, binne it hert fan resinte ûntjouwings yn selsridende auto's, automatyske oersettsjinsten, en sels medyske diagnostyk.
Begripe hoe't neurale netwurken funksjonearje en hoe't se har ûntwerpe kinne helpe ús nije en ynventive applikaasjes te bouwen. En, miskien, kin it liede ta noch gruttere ûntdekkingen yn 'e takomst.
In opmerking oer it tutorial
Lykas ik hjirboppe sei, wol ik de stappen fan it oplieden fan in neuronale netwurk útlizze troch in foarbyld te jaan. Om dit te dwaan, moatte wy prate oer de MNIST-dataset. It is in populêre kar foar begjinners dy't wolle begjinne mei neurale netwurken.
MNIST is in akronym dat stiet foar Modified National Institute of Standards and Technology. It is in mei de hân skreaune sifergegevensset dy't gewoanlik wurdt brûkt foar training en testen fan masine-learmodellen, benammen neurale netwurken.
De kolleksje befettet 70,000 griisskalenfoto's fan mei de hân skreaune sifers fariearjend fan 0 oant 9.
De MNIST-dataset is in populêre benchmark foar image klassifikaasje taken. It wurdt faak brûkt foar lesjaan en learen, om't it kompakt en maklik is om mei te hanneljen, wylst it dochs in drege útdaging foar masine learen algoritmen stelt om te beantwurdzjen.
De MNIST-dataset wurdt stipe troch ferskate masine-learramen en biblioteken, ynklusyf TensorFlow, Keras, en PyTorch.
No witte wy oer de MNIST-dataset, litte wy begjinne mei ús stappen fan training fan in neuraal netwurk.
Basisstappen om in neural netwurk te trenen
Ymportearje nedige biblioteken
As jo earst begjinne mei it trainen fan in neural netwurk, is it kritysk om de nedige ark te hawwen om it model te ûntwerpen en te trenen. De earste stap yn it meitsjen fan in neural netwurk is it ymportearjen fan fereaske biblioteken lykas TensorFlow, Keras, en NumPy.
Dizze biblioteken tsjinje as boustiennen foar de ûntwikkeling fan it neuronale netwurk en leverje krúsjale mooglikheden. De kombinaasje fan dizze bibleteken soarget foar it meitsjen fan ferfine neurale netwurkûntwerpen en rappe training.
Om ús foarbyld te begjinnen; wy sille de fereaske biblioteken ymportearje, dy't TensorFlow, Keras en NumPy omfetsje. TensorFlow is in iepen-boarne masine learen ramt, Keras is in hege nivo neural netwurk API, en NumPy is in numerike kompjûter Python bibleteek.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Laad de dataset
De dataset moat no laden wurde. De dataset is de set fan gegevens wêrop it neurale netwurk sil wurde oplaat. Dit kin elke soart gegevens wêze, ynklusyf foto's, audio en tekst.
It is kritysk om de dataset yn twa dielen te dielen: ien foar it oplieden fan it neuronale netwurk en in oar foar it beoardieljen fan de krektens fan it trained model. Ferskate bibleteken, ynklusyf TensorFlow, Keras, en PyTorch, kinne brûkt wurde om de dataset te ymportearjen.
Foar ús foarbyld brûke wy ek Keras om de MNIST-dataset te laden. D'r binne 60,000 trainingfoto's en 10,000 testôfbyldings yn 'e dataset.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
De gegevens foarbewurkje
Gegevensfoarferwurking is in wichtich poadium yn it oplieden fan in neural netwurk. It omfettet it tarieden en skjinmeitsjen fan de gegevens foardat se yn it neurale netwurk wurde fiede.
Skaalfergrutting fan pikselwearden, normalisearjen fan gegevens en konvertearjen fan labels nei ien-hot kodearring binne foarbylden fan foarferwurkingsprosedueres. Dizze prosessen helpe it neuronale netwurk by it learen effektiver en krekter.
It foarferwurkjen fan de gegevens kin ek helpe om overfitting te minimalisearjen en de prestaasjes fan it neuronale netwurk te ferbetterjen.
Jo moatte de gegevens foarferwurkje foardat jo it neurale netwurk trainje. Dit omfettet it feroarjen fan de labels nei ien-hot kodearring en it skaaljen fan de pikselwearden om tusken 0 en 1 te wêzen.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
Definiearje it model
It proses fan it definiearjen fan it neuronale netwurkmodel omfettet it fêststellen fan syn arsjitektuer, lykas it oantal lagen, oantal neuroanen per laach, aktivearringsfunksjes, en netwurktype (feedforward, weromkommend, of konvolúsjoneel).
It ûntwerp fan it neurale netwurk dat jo brûke wurdt bepaald troch it soarte probleem dat jo besykje op te lossen. In goed definieare neural netwurkûntwerp kin helpe by it learen fan neuraal netwurk troch it effisjinter en krekter te meitsjen.
It is tiid om it neuronale netwurkmodel op dit punt te beskriuwen. Brûk in ienfâldich model mei twa ferburgen lagen, elk mei 128 neuroanen, en in softmax-útfierlaach, dy't 10 neuroanen hat, foar dit foarbyld.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
Kompilearje it model
De ferliesfunksje, optimizer en metriken moatte wurde oantsjutte tidens de kompilaasje fan it neurale netwurkmodel. It fermogen fan it neurale netwurk om de útfier korrekt te foarsizzen wurdt bepaald troch de ferliesfunksje.
Om de krektens fan it neuronale netwurk te ferheegjen tidens training, feroaret de optimizer syn gewichten. De effektiviteit fan it neuronale netwurk tidens training wurdt mjitten mei metriken. It model moat makke wurde foardat it neuronale netwurk kin wurde traind.
Yn ús foarbyld moatte wy no krekt it model konstruearje.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Trein it model
It trochjaan fan de tariede dataset troch it neuronale netwurk, wylst de gewichten fan it netwurk wizigje om de ferliesfunksje te minimalisearjen, stiet bekend as training fan it neurale netwurk.
De validaasjedataset wurdt brûkt om it neuronale netwurk te testen tidens training om de effektiviteit te folgjen en overfitting te foarkommen. It opliedingsproses kin wat tiid duorje, dus it is wichtich om te soargjen dat it neurale netwurk passend is oplaat om ûnderfitting te foarkommen.
Mei de trainingsgegevens kinne wy no it model traine. Om dit te dwaan, moatte wy de batchgrutte definiearje (it oantal samples ferwurke foardat it model wurdt bywurke) en it oantal epoken (it oantal werhellingen oer de folsleine dataset).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Evaluaasje fan it model
It testen fan de prestaasjes fan it neuronale netwurk op 'e testdataset is it proses fan it evaluearjen. Yn dit stadium wurdt it trained neurale netwurk brûkt om de testdataset te ferwurkjen, en de krektens wurdt evaluearre.
Hoe effektyf in neuraal netwurk it juste resultaat kin foarsizze fan gloednije, net besochte gegevens is in maatregel fan har krektens. It analysearjen fan it model kin helpe om te bepalen hoe goed it neuronale netwurk wurket en ek manieren foarstelle om it noch better te meitsjen.
Wy kinne úteinlik de prestaasjes fan it model beoardielje mei de testgegevens nei training.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Da's alles! Wy trainden in neuraal netwurk om sifers te detektearjen yn 'e MNIST-dataset.
Fan it tarieden fan de gegevens oant it beoardieljen fan de effektiviteit fan it trained model, it oplieden fan in neural netwurk omfettet ferskate prosessen. Dizze ynstruksjes helpe novices by it effisjint bouwen en trainen fan neurale netwurken.
Begjinners dy't neurale netwurken wolle brûke om ferskate problemen oan te pakken kinne dat dwaan troch dizze ynstruksjes te folgjen.
Visualisearjen fan it foarbyld
Litte wy besykje te visualisearjen wat wy mei dit foarbyld dien hawwe om better te begripen.
It Matplotlib-pakket wurdt brûkt yn dit koadefragment om in willekeurige seleksje fan foto's út 'e trainingsdataset te plotten. Earst ymportearje wy Matplotlib's "pyplot" module en alias it as "plt". Dan, mei in totale dimensje fan 10 by 10 inch, meitsje wy in figuer mei 5 rigen en 5 kolommen fan subplots.
Dan brûke wy in for-loop om oer de subplots te iterearjen, en werjaan op elk in ôfbylding fan 'e trainingsdataset. Om de ôfbylding wer te jaan wurdt de funksje "imshow" brûkt, mei de opsje "cmap" ynsteld op 'griis' om de foto's yn griisskalen wer te jaan. De titel fan elk subplot is ek ynsteld op it label fan de byhearrende ôfbylding yn de kolleksje.
Uteinlik brûke wy de funksje "show" om de plotte ôfbyldings yn 'e figuer wer te jaan. Dizze funksje lit ús in stekproef fan foto's út 'e dataset visueel evaluearje, wat kin helpe by ús begryp fan' e gegevens en de identifikaasje fan alle mooglike soargen.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
Wichtige neuronale netwurkmodellen
- Feedforward Neural Networks (FFNN): In ienfâldich type neural netwurk wêryn ynformaasje mar op ien manier reizget, fan 'e ynfierlaach nei de útfierlaach fia ien of mear ferburgen lagen.
- Convolutional Neural Networks (CNN): In neural netwurk dat faaks brûkt wurdt yn bylddeteksje en ferwurking. CNN's binne bedoeld om funksjes automatysk út foto's te herkennen en te ekstrahearjen.
- Weromkommende neurale netwurken (RNN): In neural netwurk dat faaks brûkt wurdt yn bylddeteksje en ferwurking. CNN's binne bedoeld om funksjes automatysk út foto's te herkennen en te ekstrahearjen.
- Lange koarte termyn ûnthâld (LSTM) netwurken: In foarm fan RNN makke om it probleem fan ferdwinende gradiënten yn standert RNN's te oerwinnen. Ofhinklikens op lange termyn yn opfolgjende gegevens kinne better wurde fêstlein mei LSTM's.
- Autoencoders: Net tafersjoch learend neuraal netwurk wêryn it netwurk wurdt leard om syn ynfiergegevens te reprodusearjen op syn útfierlaach. Gegevenskompresje, anomaly-deteksje en ôfbyldingsûntdekking kinne allegear wurde berikt mei autoencoders.
- Generative Adversarial Networks (GAN): In generatyf neuraal netwurk is in foarm fan neural netwurk dat wurdt leard om nije gegevens te produsearjen dy't te fergelykjen binne mei in trainingsdataset. GAN's besteane út twa netwurken: in generatornetwurk dat frisse gegevens makket en in diskriminatornetwurk dat de kwaliteit fan 'e oanmakke gegevens beoardielet.
Wrap-up, wat moatte jo folgjende stappen wêze?
Ferkenne ferskate online boarnen en kursussen om mear te learen oer it oplieden fan in neuraal netwurk. Wurkje oan projekten as foarbylden is ien metoade om in better begryp fan neurale netwurken te krijen.
Begjin mei maklike foarbylden lykas problemen mei binêre klassifikaasje of taken foar klassifikaasje fan ôfbyldings, en gean dan nei dregere taken lykas ferwurkjen fan natuerlike taal of fersteuring learen.
Wurkje oan projekten helpt jo om echte ûnderfining te krijen en jo trainingsfeardigens foar neurale netwurken te ferbetterjen.
Jo kinne ek meidwaan oan online masine-learen en groepen en foarums foar neurale netwurken om te ynteraksje mei oare learlingen en professionals, diele jo wurk, en ûntfange opmerkings en help.
LSRS MONRAD-KROHN
⁶ĵSoe it python-programma graach sjen wolle foar de flaterminimearring. Spesjale seleksje knopen foar gewicht feroarings nei de folgjende laach