In [1]:
# ----------------------------------------------------------------------------
## How to setup a Deep Learning Model in Keras
# ----------------------------------------------------------------------------

def Learn_By_Example_301(): 
    print()
    print(format('How to setup a Deep Learning Model in Keras ','*^82'))    

    import warnings
    warnings.filterwarnings("ignore")

    # load libraries
    import keras as K
    from keras.models import Sequential
    from keras.layers import Dense
    from sklearn import datasets
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import confusion_matrix
    
    # simulated data
    dataset = datasets.make_classification(n_samples=10000, n_features=20, n_informative=5, 
                n_redundant=2, n_repeated=0, n_classes=2, n_clusters_per_class=2, 
                weights=None, flip_y=0.01, class_sep=1.0, hypercube=True, shift=0.0, 
                scale=1.0, shuffle=True, random_state=None)

    X = dataset[0];  y = dataset[1]
    print(X.shape);  print(y.shape)

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)    
    
    # Define a Deep Learning Model
    model = Sequential()
    model.add(Dense(30, input_dim=20, activation='relu'))
    model.add(Dense(12, activation='relu'))
    model.add(Dense(1, activation='sigmoid'))
    
    # Compile the Model
    model.compile(loss='binary_crossentropy', optimizer='adam', 
                  metrics=['acc'])
    
    # Train the Model
    model.fit(X_train, y_train, epochs=150, batch_size=10, verbose = 1)
    
    # Evaluate the model
    scores = model.evaluate(X_test, y_test)
    print(); print(model.metrics_names); print(scores)
    print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))

    # Confusion Matrix
    y_pred = model.predict(X_test)
    y_pred = (y_pred > 0.5)
    cm = confusion_matrix(y_test, y_pred); print("\nConfusion Matrix:\n", cm)
    
    # More on the Model
    print("\n\nBackend: ", K.backend.backend())    
    print(model.summary())
    print(model.get_config())

    #from keras.utils.vis_utils import plot_model
    #plot_model(model, to_file='model.png')        

Learn_By_Example_301()
*******************How to setup a Deep Learning Model in Keras *******************
Using TensorFlow backend.
(10000, 20)
(10000,)
Epoch 1/150
6700/6700 [==============================] - 1s 99us/step - loss: 0.4313 - acc: 0.7904
Epoch 2/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.2078 - acc: 0.9296
Epoch 3/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.1535 - acc: 0.9487
Epoch 4/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.1347 - acc: 0.9590
Epoch 5/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.1243 - acc: 0.9625
Epoch 6/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.1181 - acc: 0.9648
Epoch 7/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.1124 - acc: 0.9657
Epoch 8/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.1082 - acc: 0.9676
Epoch 9/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.1052 - acc: 0.9688
Epoch 10/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.1013 - acc: 0.9719
Epoch 11/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0990 - acc: 0.9727
Epoch 12/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0962 - acc: 0.9712
Epoch 13/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0928 - acc: 0.9734
Epoch 14/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0915 - acc: 0.9748
Epoch 15/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0885 - acc: 0.9749
Epoch 16/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0860 - acc: 0.9775
Epoch 17/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0847 - acc: 0.9752
Epoch 18/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0813 - acc: 0.9764
Epoch 19/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0811 - acc: 0.9770
Epoch 20/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0788 - acc: 0.9787
Epoch 21/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0769 - acc: 0.9791
Epoch 22/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0758 - acc: 0.9794
Epoch 23/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0757 - acc: 0.9794
Epoch 24/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0735 - acc: 0.9794
Epoch 25/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0701 - acc: 0.9807
Epoch 26/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0699 - acc: 0.9803
Epoch 27/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0681 - acc: 0.9816
Epoch 28/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0665 - acc: 0.9819
Epoch 29/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0660 - acc: 0.9834
Epoch 30/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0662 - acc: 0.9822
Epoch 31/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0633 - acc: 0.9825
Epoch 32/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0633 - acc: 0.9821
Epoch 33/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0615 - acc: 0.9836
Epoch 34/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0617 - acc: 0.9828
Epoch 35/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0581 - acc: 0.9839
Epoch 36/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0577 - acc: 0.9845
Epoch 37/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0570 - acc: 0.9854
Epoch 38/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0546 - acc: 0.9852
Epoch 39/150
6700/6700 [==============================] - 1s 78us/step - loss: 0.0531 - acc: 0.9857
Epoch 40/150
6700/6700 [==============================] - 1s 78us/step - loss: 0.0556 - acc: 0.9837
Epoch 41/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0529 - acc: 0.9843
Epoch 42/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0523 - acc: 0.9842
Epoch 43/150
6700/6700 [==============================] - 1s 78us/step - loss: 0.0531 - acc: 0.9854
Epoch 44/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0506 - acc: 0.9852
Epoch 45/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0485 - acc: 0.9875
Epoch 46/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0466 - acc: 0.9881
Epoch 47/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0478 - acc: 0.9864
Epoch 48/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0465 - acc: 0.9857
Epoch 49/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0455 - acc: 0.9858
Epoch 50/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0455 - acc: 0.9863
Epoch 51/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0421 - acc: 0.9890
Epoch 52/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0429 - acc: 0.9881
Epoch 53/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0432 - acc: 0.9869
Epoch 54/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0408 - acc: 0.9875
Epoch 55/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0402 - acc: 0.9881
Epoch 56/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0390 - acc: 0.9881
Epoch 57/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0403 - acc: 0.9888
Epoch 58/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0375 - acc: 0.9887
Epoch 59/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0378 - acc: 0.9890
Epoch 60/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0363 - acc: 0.9900
Epoch 61/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0360 - acc: 0.9893
Epoch 62/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0360 - acc: 0.9899
Epoch 63/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0348 - acc: 0.9909
Epoch 64/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0363 - acc: 0.9890
Epoch 65/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0326 - acc: 0.9903
Epoch 66/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0335 - acc: 0.9913
Epoch 67/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0313 - acc: 0.9907
Epoch 68/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0320 - acc: 0.9906
Epoch 69/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0317 - acc: 0.9893
Epoch 70/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0307 - acc: 0.9906
Epoch 71/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0314 - acc: 0.9909
Epoch 72/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0294 - acc: 0.9915
Epoch 73/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0303 - acc: 0.9903
Epoch 74/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0296 - acc: 0.9916
Epoch 75/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0286 - acc: 0.9912
Epoch 76/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0256 - acc: 0.9934
Epoch 77/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0274 - acc: 0.9915
Epoch 78/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0288 - acc: 0.9901
Epoch 79/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0274 - acc: 0.9921
Epoch 80/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0273 - acc: 0.9921
Epoch 81/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0264 - acc: 0.9925
Epoch 82/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0255 - acc: 0.9924
Epoch 83/150
6700/6700 [==============================] - 1s 79us/step - loss: 0.0230 - acc: 0.9934
Epoch 84/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0233 - acc: 0.9937
Epoch 85/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0252 - acc: 0.9918
Epoch 86/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0242 - acc: 0.9934
Epoch 87/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0231 - acc: 0.9931
Epoch 88/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0246 - acc: 0.9928
Epoch 89/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0231 - acc: 0.9930
Epoch 90/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0253 - acc: 0.9919
Epoch 91/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0229 - acc: 0.9933
Epoch 92/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0211 - acc: 0.9951
Epoch 93/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0211 - acc: 0.9952
Epoch 94/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0227 - acc: 0.9930
Epoch 95/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0221 - acc: 0.9936
Epoch 96/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0218 - acc: 0.9933
Epoch 97/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0218 - acc: 0.9943
Epoch 98/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0182 - acc: 0.9957
Epoch 99/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0200 - acc: 0.9949
Epoch 100/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0212 - acc: 0.9946
Epoch 101/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0178 - acc: 0.9961
Epoch 102/150
6700/6700 [==============================] - 1s 77us/step - loss: 0.0189 - acc: 0.9954
Epoch 103/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0187 - acc: 0.9946
Epoch 104/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0199 - acc: 0.9945
Epoch 105/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0198 - acc: 0.9946
Epoch 106/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0191 - acc: 0.9948
Epoch 107/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0179 - acc: 0.9954
Epoch 108/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0198 - acc: 0.9945
Epoch 109/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0181 - acc: 0.9945
Epoch 110/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0173 - acc: 0.9955
Epoch 111/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0163 - acc: 0.9952
Epoch 112/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0181 - acc: 0.9951
Epoch 113/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0168 - acc: 0.9949
Epoch 114/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0148 - acc: 0.9961
Epoch 115/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0168 - acc: 0.9957
Epoch 116/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0176 - acc: 0.9949
Epoch 117/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0163 - acc: 0.9949
Epoch 118/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0133 - acc: 0.9967
Epoch 119/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0151 - acc: 0.9958
Epoch 120/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0147 - acc: 0.9958
Epoch 121/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0156 - acc: 0.9952
Epoch 122/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0127 - acc: 0.9967
Epoch 123/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0176 - acc: 0.9943
Epoch 124/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0137 - acc: 0.9966
Epoch 125/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0135 - acc: 0.9960
Epoch 126/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0131 - acc: 0.9967
Epoch 127/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0148 - acc: 0.9949
Epoch 128/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0127 - acc: 0.9967
Epoch 129/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0157 - acc: 0.9957
Epoch 130/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0111 - acc: 0.9970
Epoch 131/150
6700/6700 [==============================] - 1s 82us/step - loss: 0.0116 - acc: 0.9967
Epoch 132/150
6700/6700 [==============================] - 1s 86us/step - loss: 0.0146 - acc: 0.9952
Epoch 133/150
6700/6700 [==============================] - 1s 86us/step - loss: 0.0144 - acc: 0.9957
Epoch 134/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0095 - acc: 0.9978
Epoch 135/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0150 - acc: 0.9951
Epoch 136/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0151 - acc: 0.9952
Epoch 137/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0120 - acc: 0.9969
Epoch 138/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0091 - acc: 0.9978
Epoch 139/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0116 - acc: 0.9970
Epoch 140/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0108 - acc: 0.9964
Epoch 141/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0134 - acc: 0.9960
Epoch 142/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0120 - acc: 0.9960
Epoch 143/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0100 - acc: 0.9976
Epoch 144/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0091 - acc: 0.9973
Epoch 145/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0110 - acc: 0.9975
Epoch 146/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0108 - acc: 0.9967
Epoch 147/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0110 - acc: 0.9970
Epoch 148/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0108 - acc: 0.9963
Epoch 149/150
6700/6700 [==============================] - 1s 76us/step - loss: 0.0110 - acc: 0.9967
Epoch 150/150
6700/6700 [==============================] - 1s 75us/step - loss: 0.0107 - acc: 0.9967
3300/3300 [==============================] - 0s 23us/step

['loss', 'acc']
[0.34005333115727726, 0.9524242281913757]

acc: 95.24%

Confusion Matrix:
 [[1578   70]
 [  87 1565]]


Backend:  tensorflow
Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_1 (Dense)              (None, 30)                630       
_________________________________________________________________
dense_2 (Dense)              (None, 12)                372       
_________________________________________________________________
dense_3 (Dense)              (None, 1)                 13        
=================================================================
Total params: 1,015
Trainable params: 1,015
Non-trainable params: 0
_________________________________________________________________
None
{'name': 'sequential_1', 'layers': [{'class_name': 'Dense', 'config': {'name': 'dense_1', 'trainable': True, 'batch_input_shape': (None, 20), 'dtype': 'float32', 'units': 30, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'VarianceScaling', 'config': {'scale': 1.0, 'mode': 'fan_avg', 'distribution': 'uniform', 'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}}, {'class_name': 'Dense', 'config': {'name': 'dense_2', 'trainable': True, 'dtype': 'float32', 'units': 12, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'VarianceScaling', 'config': {'scale': 1.0, 'mode': 'fan_avg', 'distribution': 'uniform', 'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}}, {'class_name': 'Dense', 'config': {'name': 'dense_3', 'trainable': True, 'dtype': 'float32', 'units': 1, 'activation': 'sigmoid', 'use_bias': True, 'kernel_initializer': {'class_name': 'VarianceScaling', 'config': {'scale': 1.0, 'mode': 'fan_avg', 'distribution': 'uniform', 'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}}]}