Çfarë është Rrjeti Neural Artificial?

Rrjetet nervore artificiale (ANN) janë një nga mjetet kryesore që përdoren në mësimin e makinerive. Pjesa "neurale" e emrit të tyre quhet kështu sepse këto sisteme përpiqen të mësojnë gjëra si truri i njeriut. Rrjetet e përsëritura përmbajnë një lloj neuronesh dhe këto neurone krijojnë një rrjet duke lidhur njëri-tjetrin. Këto rrjete kanë kapacitetin e të mësuarit, ruajtjes dhe gjetjes së marrëdhënieve ndërmjet të dhënave si njeriu!
Për shembull, ata mund të mësojnë të identifikojnë imazhet që përmbajnë makina duke analizuar imazhe shembull. Pra, pasi të përfundojë faza e të mësuarit nëse i kërkoni algoritmit 'A është makinë?' duke i dhënë një imazh, algoritmi mund t'i përgjigjet pyetjes suaj sepse identifikoi imazhet e makinave të tjera dhe mësoi se si duket një makinë.
Rrjetet nervore kanë shtresa hyrëse dhe dalëse si të tjerat, por në shumicën e rasteve ato kanë edhe shtresa të fshehura, dhe zakonisht ne mund të themi se sa "thellë" algoritmi ynë sipas numrit të shtresave të fshehura.

Përpara se të fillojmë, mund t'i hidhni një sy artikullit rreth regresionit logjistik dhe bazave të tjera të algortihmëve të mësimit të makinerive dhe se si ato ndërtohen me sklearn, ju lutemi kontrolloni lidhjen:

https://medium.com/@cdabakoglu/heart-disease-logistic-regression-machine-learning-d0ebf08e55c0

Tani do të përpiqemi ta përdorim këtë algoritëm me një grup të dhënash që përmban imazhe të 10 klasave të ndryshme të modës.

Le të importojmë bibliotekat që do të përdorim.

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt

Rreth grupit të të dhënave

Grupi i të dhënave përbëhet nga një grup trajnimi prej 60,000 shembujsh dhe një grup testimi prej 10,000 shembujsh. Çdo shembull është një imazh 28x28 në shkallë gri, i shoqëruar me një etiketë nga 10 klasa.

- Each image is 28 pixels in height and 28 pixels in width, for a total of 784 pixels in total.
- Each pixel has a single pixel-value associated with it, indicating the lightness or darkness of that pixel, with higher numbers meaning darker. This pixel-value is an integer between 0 and 255.
- The training and test data sets have 785 columns. The first column consists of the class labels, and represents class of clothing. The rest of the columns contain the pixel-values of the associated image.

Çdo shembull trajnimi dhe testi i caktohet një prej etiketave të mëposhtme:

- 0 T-shirt/top
- 1 Trouser
- 2 Pullover
- 3 Dress
- 4 Coat
- 5 Sandal
- 6 Shirt
- 7 Sneaker
- 8 Bag
- 9 Ankle boot

Meqenëse duam klasifikim binar, do të zgjedhim vetëm 0 (T-shirt/lart) dhe 1 (pantallona) për të dhënat tona.

Lexoni të dhënat

dfAll = pd.read_csv("../input/fashion-mnist_train.csv")
df = dfAll[((dfAll.label == 0) | (dfAll.label == 1))]
df.head()

Kolonat e të dhënave fillojnë nga 'etiketa' në 'pixel 784'. Siç e përmenda më lart, madhësia jonë e imazheve në grupin e të dhënave është 28x28 që do të thotë se çdo imazh përbëhet nga 784 piksele.

Ne do t'i ndajmë të dhënat tona si zakonisht. 30% e të dhënave tona do të jenë të dhëna testimi dhe 70% e të dhënave tona do të përdoren për të trajnuar modelin tonë.

from sklearn.model_selection import train_test_split
X = df.drop(["label"], axis=1)
Y = df.label
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.30, random_state=42)

Le të shohim disa imazhe në grupin e të dhënave.

# Example Images
plt.figure(figsize=(8,8))
for i in range(4):
    plt.subplot(2,2,i+1)
    plt.axis('off')
    plt.imshow(x_train.head().values[i].reshape(28,28), cmap='gray', interpolation='none')

ANN me Keras

x_train = x_train.values.T
y_train = y_train.values.reshape(8400,1).T
x_test = x_test.values.T
y_test = y_test.values.reshape(3600,1).T
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import cross_val_score
from keras.models import Sequential
from keras.layers import Dense
def buildClassifier():
    classifier = Sequential()
    classifier.add(Dense(units=8, kernel_initializer="uniform", activation="relu", input_dim=x_train.shape[0])) # Hidden Layer 1 with 8 nodes
    classifier.add(Dense(units=6, kernel_initializer="uniform", activation="relu"))  # Hidden Layer 2 with 6 nodes
    classifier.add(Dense(units=1, kernel_initializer="uniform", activation="sigmoid")) # Output Layer
    classifier.compile(optimizer = "adam", loss = "binary_crossentropy", metrics = ["accuracy"])
    return classifier
classifier = KerasClassifier(build_fn=buildClassifier, epochs = 100)
accuracies = cross_val_score(estimator = classifier, X = x_train.T, y = y_train.T, cv=3)
mean = accuracies.mean()
variance = accuracies.std()
print("Accuracy Mean is {:.2f}%".format(mean*100))
print("Accuracy Variance is {}".format(variance))

Mund të themi se modeli ynë funksionon me afërsisht99% saktësi.

Për optimizues ose parametra të tjerë, ju lutemi kontrolloni lidhjen:

https://keras.io/optimizers/

Faleminderit per kohen tuaj.

LinkedIn: https://www.linkedin.com/in/canerdabakoglu/

GitHub: https://github.com/cdabakoglu

Kaggle: https://www.kaggle.com/cdabakoglu