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.
ML mit TensorFlow & Keras Guide
- TensorFlow vs. PyTorch: Die Wahl Ihres ML-Frameworks
- Einführung in TensorFlow und logistische Regression
- Verwendung von TensorFlow zur Erstellung eines neuronalen Netzwerks (mit Beispielen)
- Verwendung des TensorFlow-Neuralnetzwerks für maschinelle Lernvorhersagen mit TripAdvisor-Daten
- Wie die Keras-Maschinensprachen-API TensorFlow erleichtert
- Wie man Keras verwendet, um Klassifikationsprobleme mit einem neuronalen Netzwerk zu lösen
- Deep Learning Schritt-für-Schritt-Neuralnetz-Tutorial mit Keras
- Google Cloud TPUs für ML-Beschleunigung
Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.