Introduktion till neurala nätverk

Deep Learning handlar om att använda djupa neurala nätverk för att lösa komplexa problem, som bildigenkänning, textanalys och mycket mer. Vi använder Python-biblioteket Keras (del av TensorFlow) för att bygga och träna ett enkelt neuralt nätverk.
Vad är neurala nätverk?
Ett neuralt nätverk är inspirerat av hur hjärnan fungerar. Det består av:
- Input Layer: Tar emot data.
- Hidden Layers: Utför beräkningar och extraherar mönster.
- Output Layer: Returnerar slutresultatet.
| Del | Beskrivning |
|---|---|
| Input Layer | Tar in data (t.ex. bilder, siffror). |
| Hidden Layers | Utför matrisberäkningar och aktiveringsfunktioner. |
| Output Layer | Returnerar modellens förutsägelser. |
Steg 1: Ladda och förstå data
Vi använder MNIST Dataset, som innehåller handskrivna siffror.
import tensorflow as tffrom tensorflow.keras.datasets import mnist# Load the MNIST dataset(X_train, y_train), (X_test, y_test) = mnist.load_data()# Normalize dataX_train = X_train / 255.0X_test = X_test / 255.0print(f"Training data shape: {X_train.shape}")print(f"Testing data shape: {X_test.shape}")Code language: PHP (php) Output:
Training data shape: (60000, 28, 28)
Testing data shape: (10000, 28, 28)
Steg 2: Bygg ett neuralt nätverk
Vi bygger ett nätverk med 2 dolda lager.
from tensorflow.keras.models import Sequentialfrom tensorflow.keras.layers import Flatten, Dense# Build the modelmodel = Sequential([ Flatten(input_shape=(28, 28)), # Flatten 28x28 images to a 1D array Dense(128, activation='relu'), # Hidden layer with 128 neurons Dense(64, activation='relu'), # Hidden layer with 64 neurons Dense(10, activation='softmax') # Output layer with 10 classes])# Compile the modelmodel.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])print(model.summary())Code language: PHP (php) | Layer | Antal noder | Aktiveringsfunktion |
|---|---|---|
| Flatten | 784 | Ingen |
| Dense | 128 | ReLU |
| Dense | 64 | ReLU |
| Dense | 10 | Softmax |
Steg 3: Träna modellen
Nu tränar vi modellen på träningsdatan.
# Train the modelhistory = model.fit(X_train, y_train, epochs=5, validation_split=0.2)# Output:# Epoch 1/5# 1500/1500 [==============================] - loss: 0.23 - accuracy: 0.93 - val_loss: 0.10 - val_accuracy: 0.97# ...Code language: PHP (php) Steg 4: Utvärdera modellen
Vi testar modellen på testdatan.
# Evaluate the modeltest_loss, test_accuracy = model.evaluate(X_test, y_test)print(f"Test accuracy: {test_accuracy:.2f}")Code language: PHP (php) Output:
Test accuracy: 0.97
Steg 5: Gör förutsägelser
Nu använder vi modellen för att göra förutsägelser.
import numpy as npimport matplotlib.pyplot as plt# Make predictionspredictions = model.predict(X_test)# Visualize a predictionindex = 0plt.imshow(X_test[index], cmap='gray')plt.title(f"Predicted: {np.argmax(predictions[index])}, Actual: {y_test[index]}")plt.show()Code language: PHP (php) Output:
En bild av en siffra visas, och titeln visar den förutsagda och faktiska siffran.
Sammanfattande kod
Här är en komplett sammanställning av stegen.
import tensorflow as tffrom tensorflow.keras.datasets import mnistfrom tensorflow.keras.models import Sequentialfrom tensorflow.keras.layers import Flatten, Denseimport numpy as npimport matplotlib.pyplot as plt# Load and preprocess data(X_train, y_train), (X_test, y_test) = mnist.load_data()X_train, X_test = X_train / 255.0, X_test / 255.0# Build the modelmodel = Sequential([ Flatten(input_shape=(28, 28)), Dense(128, activation='relu'), Dense(64, activation='relu'), Dense(10, activation='softmax')])# Compile the modelmodel.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])# Train the modelmodel.fit(X_train, y_train, epochs=5, validation_split=0.2)# Evaluate the modeltest_loss, test_accuracy = model.evaluate(X_test, y_test)print(f"Test accuracy: {test_accuracy:.2f}")# Make predictionspredictions = model.predict(X_test)index = 0plt.imshow(X_test[index], cmap='gray')plt.title(f"Predicted: {np.argmax(predictions[index])}, Actual: {y_test[index]}")plt.show()Code language: PHP (php) Tips och vanliga fallgropar
Tips
- Använd normalisering för att förbättra modellens prestanda.
- Testa olika antal lager och noder för att hitta den bästa arkitekturen.
- Använd valideringsdata för att upptäcka överträning.
Vanliga fallgropar
- Överträning: Modellen presterar bra på träningsdata men dåligt på testdata.
- Felaktig aktiveringsfunktion: Välj funktioner som passar problemet.
- Brist på data: Deep Learning kräver mycket data för att prestera bra.
Sammanfattning
Neurala nätverk är en kraftfull teknik för att lösa komplexa problem. Genom att använda Keras och TensorFlow kan du snabbt bygga och träna modeller. Experimentera med olika arkitekturer och dataset för att fördjupa din förståelse av Deep Learning. Lycka till!

