경사 소실 (Vanishing Gradient)
import numpy as np
import tensorflow as tf
print(f'TensorFlow version: {tf.__version__}')TensorFlow version: 2.10.0
CPU만 사용하도록 설정
tf.config.set_visible_devices([], 'GPU')
tf.config.get_visible_devices()[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU')]from sklearn.datasets import make_circles
import matplotlib.pyplot as plt
X, y = make_circles(n_samples=1000, factor=0.5, noise=0.1)
plt.figure(figsize=(8,6))
plt.scatter(X[:,0], X[:,1], c=y)
plt.show()
from tensorflow.keras import Sequential, layers
def create_model(dense_units, activation, kernel_initializer=None, name=None):
if not kernel_initializer:
kernel_initializer = 'glorot_uniform'
model = Sequential(name=name)
model.add(layers.InputLayer(input_shape=(2,), name="input"))
# hidden layers
for i, units in enumerate(dense_units):
model.add(layers.Dense(units, activation=activation, kernel_initializer=kernel_initializer, name=f'FC{i+1}-{activation}'))
# output layer
model.add(layers.Dense(1, activation="sigmoid", name="output"))
return modelmodel = create_model(dense_units=[5], activation="relu", name='mlp1-relu')
model.summary()
model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["acc"])
model.fit(X, y, batch_size=32, epochs=100, verbose=0)
print(model.evaluate(X,y))Model: "mlp1-relu"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
FC1-relu (Dense) (None, 5) 15
output (Dense) (None, 1) 6
=================================================================
Total params: 21
Trainable params: 21
Non-trainable params: 0
_________________________________________________________________
32/32 [==============================] - 0s 677us/step - loss: 0.3868 - acc: 0.8910
[0.3867517113685608, 0.890999972820282]
model = create_model(dense_units=[5], activation="sigmoid", name='mlp1-sigmoid')
model.summary()
model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["acc"])
model.fit(X, y, batch_size=32, epochs=100, verbose=0)
print(model.evaluate(X,y))Model: "mlp1-sigmoid"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
FC1-sigmoid (Dense) (None, 5) 15
output (Dense) (None, 1) 6
=================================================================
Total params: 21
Trainable params: 21
Non-trainable params: 0
_________________________________________________________________
32/32 [==============================] - 0s 645us/step - loss: 0.6910 - acc: 0.6220
[0.690969705581665, 0.621999979019165]
model = create_model(dense_units=[5, 5, 5], activation='sigmoid', name="mlp3-sigmoid")
model.summary()
model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["acc"])
model.fit(X, y, batch_size=32, epochs=100, verbose=0)
print(model.evaluate(X,y))Model: "mlp3-sigmoid"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
FC1-sigmoid (Dense) (None, 5) 15
FC2-sigmoid (Dense) (None, 5) 30
FC3-sigmoid (Dense) (None, 5) 30
output (Dense) (None, 1) 6
=================================================================
Total params: 81
Trainable params: 81
Non-trainable params: 0
_________________________________________________________________
32/32 [==============================] - 0s 710us/step - loss: 0.6921 - acc: 0.5210
[0.6921333074569702, 0.5210000276565552]
from tensorflow.keras.callbacks import Callback
class WeightCapture(Callback):
"Capture the weights of each layer of the model"
def __init__(self, model):
super().__init__()
self.model = model
self.weights = []
self.epochs = []
def on_epoch_end(self, epoch, logs=None):
self.epochs.append(epoch) # remember the epoch axis
weight = {}
for layer in model.layers:
if not layer.weights:
continue
name = layer.weights[0].name.split("/")[0]
weight[name] = layer.weights[0].numpy()
self.weights.append(weight)
def plotweight(capture_cb):
"Plot the weights' mean and s.d. across epochs"
fig, ax = plt.subplots(2, 1, sharex=True, constrained_layout=True, figsize=(8, 10))
ax[0].set_title("Mean weight")
for key in capture_cb.weights[0]:
ax[0].plot(capture_cb.epochs, [w[key].mean() for w in capture_cb.weights], label=key)
ax[0].legend()
ax[1].set_title("S.D.")
for key in capture_cb.weights[0]:
ax[1].plot(capture_cb.epochs, [w[key].std() for w in capture_cb.weights], label=key)
ax[1].legend()
plt.show()model = create_model(dense_units=[5, 5, 5, 5], activation="sigmoid", kernel_initializer="random_normal", name='mlp4-sigmoid')
weight_capture = WeightCapture(model)
weight_capture.on_epoch_end(-1)
model.summary()
model.compile(optimizer="rmsprop", loss="binary_crossentropy", metrics=["acc"])
model.fit(X, y, batch_size=32, epochs=100, callbacks=[weight_capture], verbose=1)
print(f'Loss={0:.4f}, Acc.={1:.2%}'.format(*model.evaluate(X,y)))
plotweight(weight_capture)Model: "mlp4-sigmoid"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
FC1-sigmoid (Dense) (None, 5) 15
FC2-sigmoid (Dense) (None, 5) 30
FC3-sigmoid (Dense) (None, 5) 30
FC4-sigmoid (Dense) (None, 5) 30
output (Dense) (None, 1) 6
=================================================================
Total params: 111
Trainable params: 111
Non-trainable params: 0
_________________________________________________________________
Epoch 1/100
32/32 [==============================] - 1s 936us/step - loss: 0.7011 - acc: 0.5000
Epoch 2/100
32/32 [==============================] - 0s 903us/step - loss: 0.6963 - acc: 0.5000
Epoch 3/100
32/32 [==============================] - 0s 871us/step - loss: 0.6949 - acc: 0.5000
Epoch 4/100
32/32 [==============================] - 0s 871us/step - loss: 0.6939 - acc: 0.5000
Epoch 5/100
32/32 [==============================] - 0s 903us/step - loss: 0.6935 - acc: 0.5000
Epoch 6/100
32/32 [==============================] - 0s 887us/step - loss: 0.6935 - acc: 0.5000
Epoch 7/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.5000
Epoch 8/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4940
Epoch 9/100
32/32 [==============================] - 0s 839us/step - loss: 0.6934 - acc: 0.4930
Epoch 10/100
32/32 [==============================] - 0s 839us/step - loss: 0.6934 - acc: 0.4680
Epoch 11/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4800
Epoch 12/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4780
Epoch 13/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4880
Epoch 14/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.5000
Epoch 15/100
32/32 [==============================] - 0s 871us/step - loss: 0.6935 - acc: 0.4940
Epoch 16/100
32/32 [==============================] - 0s 839us/step - loss: 0.6933 - acc: 0.4860
Epoch 17/100
32/32 [==============================] - 0s 839us/step - loss: 0.6934 - acc: 0.4900
Epoch 18/100
32/32 [==============================] - 0s 872us/step - loss: 0.6933 - acc: 0.4940
Epoch 19/100
32/32 [==============================] - 0s 932us/step - loss: 0.6935 - acc: 0.5000
Epoch 20/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4940
Epoch 21/100
32/32 [==============================] - 0s 935us/step - loss: 0.6934 - acc: 0.5000
Epoch 22/100
32/32 [==============================] - 0s 936us/step - loss: 0.6934 - acc: 0.4940
Epoch 23/100
32/32 [==============================] - 0s 903us/step - loss: 0.6933 - acc: 0.4980
Epoch 24/100
32/32 [==============================] - 0s 918us/step - loss: 0.6933 - acc: 0.5000
Epoch 25/100
32/32 [==============================] - 0s 905us/step - loss: 0.6934 - acc: 0.4960
Epoch 26/100
32/32 [==============================] - 0s 903us/step - loss: 0.6933 - acc: 0.5040
Epoch 27/100
32/32 [==============================] - 0s 968us/step - loss: 0.6933 - acc: 0.4760
Epoch 28/100
32/32 [==============================] - 0s 968us/step - loss: 0.6934 - acc: 0.4980
Epoch 29/100
32/32 [==============================] - 0s 968us/step - loss: 0.6934 - acc: 0.5000
Epoch 30/100
32/32 [==============================] - 0s 893us/step - loss: 0.6933 - acc: 0.4920
Epoch 31/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.5020
Epoch 32/100
32/32 [==============================] - 0s 935us/step - loss: 0.6934 - acc: 0.4900
Epoch 33/100
32/32 [==============================] - 0s 839us/step - loss: 0.6934 - acc: 0.4930
Epoch 34/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4900
Epoch 35/100
32/32 [==============================] - 0s 968us/step - loss: 0.6933 - acc: 0.4900
Epoch 36/100
32/32 [==============================] - 0s 903us/step - loss: 0.6935 - acc: 0.4780
Epoch 37/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4960
Epoch 38/100
32/32 [==============================] - 0s 903us/step - loss: 0.6933 - acc: 0.4860
Epoch 39/100
32/32 [==============================] - 0s 935us/step - loss: 0.6934 - acc: 0.4880
Epoch 40/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4800
Epoch 41/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4940
Epoch 42/100
32/32 [==============================] - 0s 871us/step - loss: 0.6935 - acc: 0.4960
Epoch 43/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4860
Epoch 44/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4820
Epoch 45/100
32/32 [==============================] - 0s 903us/step - loss: 0.6933 - acc: 0.4880
Epoch 46/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.5000
Epoch 47/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4960
Epoch 48/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.5000
Epoch 49/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4920
Epoch 50/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.4940
Epoch 51/100
32/32 [==============================] - 0s 915us/step - loss: 0.6934 - acc: 0.4860
Epoch 52/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4940
Epoch 53/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.4880
Epoch 54/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4940
Epoch 55/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4780
Epoch 56/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4860
Epoch 57/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.5020
Epoch 58/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4880
Epoch 59/100
32/32 [==============================] - 0s 839us/step - loss: 0.6934 - acc: 0.4780
Epoch 60/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4700
Epoch 61/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.4900
Epoch 62/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.5000
Epoch 63/100
32/32 [==============================] - 0s 907us/step - loss: 0.6934 - acc: 0.4900
Epoch 64/100
32/32 [==============================] - 0s 930us/step - loss: 0.6933 - acc: 0.4820
Epoch 65/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4900
Epoch 66/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.5000
Epoch 67/100
32/32 [==============================] - 0s 968us/step - loss: 0.6934 - acc: 0.4680
Epoch 68/100
32/32 [==============================] - 0s 936us/step - loss: 0.6935 - acc: 0.4700
Epoch 69/100
32/32 [==============================] - 0s 911us/step - loss: 0.6933 - acc: 0.5000
Epoch 70/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4920
Epoch 71/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.4900
Epoch 72/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4840
Epoch 73/100
32/32 [==============================] - 0s 903us/step - loss: 0.6933 - acc: 0.4800
Epoch 74/100
32/32 [==============================] - 0s 871us/step - loss: 0.6935 - acc: 0.4880
Epoch 75/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4840
Epoch 76/100
32/32 [==============================] - 0s 839us/step - loss: 0.6933 - acc: 0.5000
Epoch 77/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4940
Epoch 78/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4840
Epoch 79/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4720
Epoch 80/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.5000
Epoch 81/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4880
Epoch 82/100
32/32 [==============================] - 0s 903us/step - loss: 0.6933 - acc: 0.4780
Epoch 83/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4820
Epoch 84/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.5000
Epoch 85/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4840
Epoch 86/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.5000
Epoch 87/100
32/32 [==============================] - 0s 871us/step - loss: 0.6935 - acc: 0.4960
Epoch 88/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4780
Epoch 89/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4870
Epoch 90/100
32/32 [==============================] - 0s 871us/step - loss: 0.6934 - acc: 0.4760
Epoch 91/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.4980
Epoch 92/100
32/32 [==============================] - 0s 903us/step - loss: 0.6933 - acc: 0.4920
Epoch 93/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4960
Epoch 94/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.4860
Epoch 95/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4880
Epoch 96/100
32/32 [==============================] - 0s 890us/step - loss: 0.6934 - acc: 0.4720
Epoch 97/100
32/32 [==============================] - 0s 839us/step - loss: 0.6935 - acc: 0.4860
Epoch 98/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.4840
Epoch 99/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4800
Epoch 100/100
32/32 [==============================] - 0s 903us/step - loss: 0.6934 - acc: 0.4900
32/32 [==============================] - 0s 710us/step - loss: 0.6932 - acc: 0.5000
Loss=0.0000, Acc.=100.00%

model = create_model(dense_units=[5, 5, 5, 5], activation="tanh", kernel_initializer="random_normal", name='mlp4-tanh')
weight_capture = WeightCapture(model)
weight_capture.on_epoch_end(-1)
model.summary()
model.compile(optimizer="rmsprop", loss="binary_crossentropy", metrics=["acc"])
model.fit(X, y, batch_size=32, epochs=100, callbacks=[weight_capture], verbose=1)
print(f'Loss={0:.4f}, Acc.={1:.2%}'.format(*model.evaluate(X,y)))
plotweight(weight_capture)Model: "mlp4-tanh"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
FC1-tanh (Dense) (None, 5) 15
FC2-tanh (Dense) (None, 5) 30
FC3-tanh (Dense) (None, 5) 30
FC4-tanh (Dense) (None, 5) 30
output (Dense) (None, 1) 6
=================================================================
Total params: 111
Trainable params: 111
Non-trainable params: 0
_________________________________________________________________
Epoch 1/100
32/32 [==============================] - 1s 935us/step - loss: 0.6933 - acc: 0.4710
Epoch 2/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.4680
Epoch 3/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.4820
Epoch 4/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.4940
Epoch 5/100
32/32 [==============================] - 0s 839us/step - loss: 0.6933 - acc: 0.4720
Epoch 6/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4680
Epoch 7/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.5000
Epoch 8/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4880
Epoch 9/100
32/32 [==============================] - 0s 839us/step - loss: 0.6933 - acc: 0.4720
Epoch 10/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4940
Epoch 11/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4940
Epoch 12/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.4740
Epoch 13/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.4880
Epoch 14/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4860
Epoch 15/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4740
Epoch 16/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4920
Epoch 17/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 18/100
32/32 [==============================] - 0s 903us/step - loss: 0.6933 - acc: 0.4640
Epoch 19/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 20/100
32/32 [==============================] - 0s 903us/step - loss: 0.6933 - acc: 0.4840
Epoch 21/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4920
Epoch 22/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4880
Epoch 23/100
32/32 [==============================] - 0s 839us/step - loss: 0.6932 - acc: 0.4940
Epoch 24/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 25/100
32/32 [==============================] - 0s 858us/step - loss: 0.6932 - acc: 0.4880
Epoch 26/100
32/32 [==============================] - 0s 916us/step - loss: 0.6932 - acc: 0.5000
Epoch 27/100
32/32 [==============================] - 0s 934us/step - loss: 0.6933 - acc: 0.4980
Epoch 28/100
32/32 [==============================] - 0s 968us/step - loss: 0.6933 - acc: 0.5000
Epoch 29/100
32/32 [==============================] - 0s 936us/step - loss: 0.6932 - acc: 0.4960
Epoch 30/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4960
Epoch 31/100
32/32 [==============================] - 0s 936us/step - loss: 0.6932 - acc: 0.5000
Epoch 32/100
32/32 [==============================] - 0s 943us/step - loss: 0.6933 - acc: 0.4840
Epoch 33/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4980
Epoch 34/100
32/32 [==============================] - 0s 935us/step - loss: 0.6932 - acc: 0.4920
Epoch 35/100
32/32 [==============================] - 0s 968us/step - loss: 0.6932 - acc: 0.5000
Epoch 36/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4940
Epoch 37/100
32/32 [==============================] - 0s 940us/step - loss: 0.6932 - acc: 0.5000
Epoch 38/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4840
Epoch 39/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4840
Epoch 40/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 41/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4880
Epoch 42/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 43/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4940
Epoch 44/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 45/100
32/32 [==============================] - 0s 839us/step - loss: 0.6932 - acc: 0.4780
Epoch 46/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4940
Epoch 47/100
32/32 [==============================] - 0s 839us/step - loss: 0.6932 - acc: 0.4680
Epoch 48/100
32/32 [==============================] - 0s 839us/step - loss: 0.6932 - acc: 0.4820
Epoch 49/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4800
Epoch 50/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4880
Epoch 51/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4740
Epoch 52/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4940
Epoch 53/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4680
Epoch 54/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4660
Epoch 55/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4820
Epoch 56/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4960
Epoch 57/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 58/100
32/32 [==============================] - 0s 839us/step - loss: 0.6932 - acc: 0.4840
Epoch 59/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4880
Epoch 60/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4800
Epoch 61/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 62/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 63/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4940
Epoch 64/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4960
Epoch 65/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 66/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 67/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4880
Epoch 68/100
32/32 [==============================] - 0s 839us/step - loss: 0.6932 - acc: 0.4940
Epoch 69/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 70/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 71/100
32/32 [==============================] - 0s 898us/step - loss: 0.6932 - acc: 0.5000
Epoch 72/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 73/100
32/32 [==============================] - 0s 935us/step - loss: 0.6932 - acc: 0.5000
Epoch 74/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4940
Epoch 75/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 76/100
32/32 [==============================] - 0s 919us/step - loss: 0.6932 - acc: 0.4900
Epoch 77/100
32/32 [==============================] - 0s 871us/step - loss: 0.6933 - acc: 0.5000
Epoch 78/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5020
Epoch 79/100
32/32 [==============================] - 0s 839us/step - loss: 0.6933 - acc: 0.4920
Epoch 80/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4920
Epoch 81/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4800
Epoch 82/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4760
Epoch 83/100
32/32 [==============================] - 0s 839us/step - loss: 0.6932 - acc: 0.4820
Epoch 84/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4980
Epoch 85/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4900
Epoch 86/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 87/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 88/100
32/32 [==============================] - 0s 935us/step - loss: 0.6932 - acc: 0.5000
Epoch 89/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 90/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 91/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4920
Epoch 92/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 93/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 94/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4960
Epoch 95/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 96/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 97/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4960
Epoch 98/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 99/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 100/100
32/32 [==============================] - 0s 839us/step - loss: 0.6932 - acc: 0.4840
32/32 [==============================] - 0s 710us/step - loss: 0.6932 - acc: 0.5000
Loss=0.0000, Acc.=100.00%

model = create_model(dense_units=[5, 5, 5, 5], activation="relu", kernel_initializer="random_normal", name='mlp4-relu')
weight_capture = WeightCapture(model)
weight_capture.on_epoch_end(-1)
model.summary()
model.compile(optimizer="rmsprop", loss="binary_crossentropy", metrics=["acc"])
model.fit(X, y, batch_size=32, epochs=100, callbacks=[weight_capture], verbose=1)
print(f'Loss={0:.4f}, Acc.={1:.2%}'.format(*model.evaluate(X,y)))
plotweight(weight_capture)Model: "mlp4-relu"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
FC1-relu (Dense) (None, 5) 15
FC2-relu (Dense) (None, 5) 30
FC3-relu (Dense) (None, 5) 30
FC4-relu (Dense) (None, 5) 30
output (Dense) (None, 1) 6
=================================================================
Total params: 111
Trainable params: 111
Non-trainable params: 0
_________________________________________________________________
Epoch 1/100
32/32 [==============================] - 1s 935us/step - loss: 0.6932 - acc: 0.4740
Epoch 2/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4960
Epoch 3/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4760
Epoch 4/100
32/32 [==============================] - 0s 839us/step - loss: 0.6932 - acc: 0.4960
Epoch 5/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 6/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4820
Epoch 7/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4880
Epoch 8/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4840
Epoch 9/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4860
Epoch 10/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4900
Epoch 11/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4740
Epoch 12/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4880
Epoch 13/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 14/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4880
Epoch 15/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4780
Epoch 16/100
32/32 [==============================] - 0s 839us/step - loss: 0.6932 - acc: 0.4840
Epoch 17/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4680
Epoch 18/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4800
Epoch 19/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4940
Epoch 20/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4960
Epoch 21/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 22/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 23/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 24/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4980
Epoch 25/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4880
Epoch 26/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4960
Epoch 27/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4920
Epoch 28/100
32/32 [==============================] - 0s 915us/step - loss: 0.6932 - acc: 0.5000
Epoch 29/100
32/32 [==============================] - 0s 928us/step - loss: 0.6932 - acc: 0.5000
Epoch 30/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4980
Epoch 31/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 32/100
32/32 [==============================] - 0s 968us/step - loss: 0.6932 - acc: 0.5000
Epoch 33/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 34/100
32/32 [==============================] - 0s 957us/step - loss: 0.6932 - acc: 0.5000
Epoch 35/100
32/32 [==============================] - 0s 938us/step - loss: 0.6932 - acc: 0.5000
Epoch 36/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4880
Epoch 37/100
32/32 [==============================] - 0s 936us/step - loss: 0.6932 - acc: 0.4900
Epoch 38/100
32/32 [==============================] - 0s 936us/step - loss: 0.6932 - acc: 0.4900
Epoch 39/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4900
Epoch 40/100
32/32 [==============================] - 0s 924us/step - loss: 0.6932 - acc: 0.4640
Epoch 41/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4920
Epoch 42/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4660
Epoch 43/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4860
Epoch 44/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4800
Epoch 45/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4760
Epoch 46/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4900
Epoch 47/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4700
Epoch 48/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4840
Epoch 49/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 50/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 51/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 52/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4900
Epoch 53/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4900
Epoch 54/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4840
Epoch 55/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4920
Epoch 56/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 57/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4940
Epoch 58/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4880
Epoch 59/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4960
Epoch 60/100
32/32 [==============================] - 0s 935us/step - loss: 0.6932 - acc: 0.5000
Epoch 61/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 62/100
32/32 [==============================] - 0s 935us/step - loss: 0.6932 - acc: 0.4880
Epoch 63/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 64/100
32/32 [==============================] - 0s 936us/step - loss: 0.6932 - acc: 0.4880
Epoch 65/100
32/32 [==============================] - 0s 935us/step - loss: 0.6932 - acc: 0.4920
Epoch 66/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4820
Epoch 67/100
32/32 [==============================] - 0s 874us/step - loss: 0.6932 - acc: 0.4640
Epoch 68/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4920
Epoch 69/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4960
Epoch 70/100
32/32 [==============================] - 0s 935us/step - loss: 0.6932 - acc: 0.4920
Epoch 71/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4820
Epoch 72/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 73/100
32/32 [==============================] - 0s 928us/step - loss: 0.6932 - acc: 0.4960
Epoch 74/100
32/32 [==============================] - 0s 920us/step - loss: 0.6932 - acc: 0.4900
Epoch 75/100
32/32 [==============================] - 0s 968us/step - loss: 0.6932 - acc: 0.5000
Epoch 76/100
32/32 [==============================] - 0s 935us/step - loss: 0.6932 - acc: 0.4940
Epoch 77/100
32/32 [==============================] - 0s 935us/step - loss: 0.6932 - acc: 0.4840
Epoch 78/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4980
Epoch 79/100
32/32 [==============================] - 0s 942us/step - loss: 0.6932 - acc: 0.5000
Epoch 80/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4800
Epoch 81/100
32/32 [==============================] - 0s 935us/step - loss: 0.6932 - acc: 0.4760
Epoch 82/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4900
Epoch 83/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 84/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4840
Epoch 85/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4900
Epoch 86/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4880
Epoch 87/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 88/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4860
Epoch 89/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4920
Epoch 90/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4780
Epoch 91/100
32/32 [==============================] - 0s 936us/step - loss: 0.6932 - acc: 0.5000
Epoch 92/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4960
Epoch 93/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4740
Epoch 94/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4780
Epoch 95/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.4920
Epoch 96/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.4920
Epoch 97/100
32/32 [==============================] - 0s 871us/step - loss: 0.6932 - acc: 0.5000
Epoch 98/100
32/32 [==============================] - 0s 935us/step - loss: 0.6932 - acc: 0.4840
Epoch 99/100
32/32 [==============================] - 0s 903us/step - loss: 0.6932 - acc: 0.5000
Epoch 100/100
32/32 [==============================] - 0s 936us/step - loss: 0.6932 - acc: 0.4620
32/32 [==============================] - 0s 677us/step - loss: 0.6931 - acc: 0.5000
Loss=0.0000, Acc.=100.00%
