Wie die Keras-Maschinensprachen-API TensorFlow erleichtert

Wie die Keras-Maschinensprachen-API TensorFlow erleichtert

  • Künstliche Intelligenz
6 Minuten Lesezeit Aktualisiert Aug 3, 2018

Auf einen Blick: Keras ist ein Python-Framework, das den Aufbau neuronaler Netze mit TensorFlow vereinfacht und so die Benutzerfreundlichkeit für maschinelle Lernaufgaben erhöht. Es konzentriert sich auf die Entwicklung und Ausführung von Modellen für Klassifikationsprobleme.

  • Keras arbeitet mit TensorFlow, cuDNN und CNTK.
  • Es vereinfacht die Implementierung von maschinellen Lernlösungen.

Keras ist ein Python-Framework, das entwickelt wurde, um die Arbeit mit Tensorflow (ebenfalls in Python geschrieben) zu erleichtern. Es baut neuronale Netze, die natürlich für Klassifikationsprobleme verwendet werden. Das folgende Beispielproblem ist binäre Klassifikation. Den Code finden Sie hier. Das binäre Klassifikationsproblem besteht darin, festzustellen, ob ein Kunde etwas mit 14 verschiedenen Funktionen kaufen wird. Die Daten können Sie hier sehen.

Keras können auf folgenden Punkten laufen:

  • TensorFlow
  • cuDNN
  • CNTK

Hier verwenden wir Tensorflow. Installiere also Aconda und führe dann diese Befehle aus, um den Rest zu installieren.

Der Code

    conda install theano
conda install tensorflow
conda install keras

Im untenstehenden Code haben wir einen Dataframe mit Form (673,14), also 673 Zeilen und 14 Feature-Spalten. Wir nehmen die Spalten namens Buy und verwenden diese für Labels. Man kann die Keras-Methoden mit Dataframes, Numpy-Arrays oder Tensors verwenden.

Wir deklarieren unser Modell als sequentiell. Das sind ein Stapel von Schichten.

Wir sagen Keras, er soll die Genauigkeitsmetriken zurückgeben =['Genauigkeit'].

    import tensorflow as tf
from keras.models import Sequential
import pandas as pd
from keras.layers import Dense

url = 'https://raw.githubusercontent.com/werowe/
logisticRegressionBestModel/master/KidCreative.csv'

data = pd.read_csv(url, delimiter=',')

labels=data['Buy']
features = data.iloc[:,2:16]

model = Sequential()

model.add(Dense(units=64, activation='relu', input_dim=1))
model.add(Dense(units=14, activation='softmax'))

model.compile(loss='categorical_crossentropy',
              optimizer='sgd',
              metrics=['accuracy'])

model.fit(labels, features,
          batch_size=12,
          epochs=10,
          verbose=1,
          validation_data=(labels, features))
          
model.evaluate(labels, features, verbose=0)

model.summary()

Die Ausgabe sieht so aus. Wie Sie sehen können, wurde der sgd-Optimierer (Standard Gradient Descent) 10 Mal durchgeführt und categorical_crossentropy , da wir die Epochen auf 10 gesetzt haben. Da wir dieselben Daten für Training und Auswertung verwendet haben, erhalten wir eine Genauigkeit von 0,9866. Im tatsächlichen Gebrauch würden wir die Eingabedaten in Trainings- und Testdaten aufteilen, entsprechend der Standardkonvention. Der Verlust beträgt 362,1225. Wir hätten mse (mittlerer quadratischer Fehler) verwenden können, aber wir haben categorical_crossentropy verwendet. Das Ziel des Modells (in diesem Fall sgd) ist es, die Verlustfunktion zu minimieren, also die Differenz zwischen dem tatsächlichen und dem vorhergesagten Wert.

    rain on 673 samples, validate on 673 samples
Epoch 1/10
2018-07-26 08:43:32.122722: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
673/673 [==============================] - 0s 494us/step - loss: 1679.5777 - acc: 0.9851 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 2/10
673/673 [==============================] - 0s 233us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 3/10
673/673 [==============================] - 0s 218us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 4/10
673/673 [==============================] - 0s 208us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 5/10
673/673 [==============================] - 0s 213us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 6/10
673/673 [==============================] - 0s 212us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 7/10
673/673 [==============================] - 0s 216us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 8/10
673/673 [==============================] - 0s 218us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 9/10
673/673 [==============================] - 0s 228us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 10/10
673/673 [==============================] - 0s 239us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866

>>>           
... model.evaluate(labels, features, verbose=0)
[362.1224654085746, 0.986627043090639]
>>> 
>>> model.summary()
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_1 (Dense)              (None, 64)                128       
_________________________________________________________________
dense_2 (Dense)              (None, 14)                910       
=================================================================
Total params: 1,038
Trainable params: 1,038
Non-trainable params: 0

Jetzt können Sie die Predict()-Methode verwenden, um eine Vorhersage darüber zu machen, ob eine Person dieses Produkt wahrscheinlich kaufen wird oder nicht.

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus Künstliche Intelligenz

Abonnieren Sie The Brief

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Danke

Sie haben The Brief abonniert
Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.