In [3]:
## 분류 DNN 모델 구현 ########################
from keras import layers, models
class DNN(models.Sequential):
def __init__(self, Nin, Nh_l, Pd_l, Nout):
super().__init__()
self.add(layers.Dense(Nh_l[0], activation='relu',
input_shape=(Nin,), name='Hidden-1'))
self.add(layers.Dropout(Pd_l[0]))
self.add(layers.Dense(Nh_l[1], activation='relu',
name='Hidden-2'))
self.add(layers.Dropout(Pd_l[1]))
self.add(layers.Dense(Nout, activation='softmax'))
self.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
# 데이터 준비 ##############################
import numpy as np
from keras import datasets # mnist
from keras.utils import np_utils # to_categorical
def Data_func():
(X_train, y_train), (X_test, y_test) = datasets.cifar10.load_data()
Y_train = np_utils.to_categorical(y_train)
Y_test = np_utils.to_categorical(y_test)
L, W, H, C = X_train.shape
X_train = X_train.reshape(-1, W * H * C)
X_test = X_test.reshape(-1, W * H * C)
X_train = X_train / 255.0
X_test = X_test / 255.0
return (X_train, Y_train), (X_test, Y_test)
# 학습 효과 분석 ##############################
from ann_mnist_cl import plot_loss, plot_acc
import matplotlib.pyplot as plt
# 분류 DNN 학습 및 테스팅 ####################
def main():
Nh_l = [100, 50]
Pd_l = [0.0, 0.0]
number_of_class = 10
Nout = number_of_class
(X_train, Y_train), (X_test, Y_test) = Data_func()
model = DNN(X_train.shape[1], Nh_l, Pd_l, Nout)
history = model.fit(X_train, Y_train, epochs=100, batch_size=100, validation_split=0.2)
performace_test = model.evaluate(X_test, Y_test, batch_size=100)
print('Test Loss and Accuracy ->', performace_test)
plot_acc(history)
plt.show()
plot_loss(history)
plt.show()
In [4]:
main()
Train on 40000 samples, validate on 10000 samples
Epoch 1/100
40000/40000 [==============================] - 3s - loss: 1.9446 - acc: 0.3004 - val_loss: 1.8597 - val_acc: 0.3188
Epoch 2/100
40000/40000 [==============================] - 3s - loss: 1.7665 - acc: 0.3735 - val_loss: 1.7521 - val_acc: 0.3664
Epoch 3/100
40000/40000 [==============================] - 3s - loss: 1.6916 - acc: 0.3976 - val_loss: 1.6985 - val_acc: 0.3945
Epoch 4/100
40000/40000 [==============================] - 3s - loss: 1.6456 - acc: 0.4136 - val_loss: 1.6577 - val_acc: 0.4103
Epoch 5/100
40000/40000 [==============================] - 3s - loss: 1.6017 - acc: 0.4309 - val_loss: 1.6228 - val_acc: 0.4229
Epoch 6/100
40000/40000 [==============================] - 3s - loss: 1.5773 - acc: 0.4368 - val_loss: 1.6021 - val_acc: 0.4270
Epoch 7/100
40000/40000 [==============================] - 3s - loss: 1.5520 - acc: 0.4490 - val_loss: 1.5918 - val_acc: 0.4349
Epoch 8/100
40000/40000 [==============================] - 3s - loss: 1.5276 - acc: 0.4546 - val_loss: 1.5833 - val_acc: 0.4387
Epoch 9/100
40000/40000 [==============================] - 3s - loss: 1.5148 - acc: 0.4627 - val_loss: 1.6608 - val_acc: 0.4152
Epoch 10/100
40000/40000 [==============================] - 3s - loss: 1.4988 - acc: 0.4672 - val_loss: 1.5466 - val_acc: 0.4540
Epoch 11/100
40000/40000 [==============================] - 3s - loss: 1.4805 - acc: 0.4743 - val_loss: 1.5447 - val_acc: 0.4600
Epoch 12/100
40000/40000 [==============================] - 3s - loss: 1.4610 - acc: 0.4796 - val_loss: 1.5563 - val_acc: 0.4549
Epoch 13/100
40000/40000 [==============================] - 3s - loss: 1.4509 - acc: 0.4830 - val_loss: 1.5492 - val_acc: 0.4609
Epoch 14/100
40000/40000 [==============================] - 3s - loss: 1.4382 - acc: 0.4856 - val_loss: 1.5223 - val_acc: 0.4650
Epoch 15/100
40000/40000 [==============================] - 3s - loss: 1.4246 - acc: 0.4916 - val_loss: 1.5422 - val_acc: 0.4574
Epoch 16/100
40000/40000 [==============================] - 3s - loss: 1.4187 - acc: 0.4931 - val_loss: 1.4973 - val_acc: 0.4689
Epoch 17/100
40000/40000 [==============================] - 3s - loss: 1.4050 - acc: 0.5003 - val_loss: 1.4999 - val_acc: 0.4686
Epoch 18/100
40000/40000 [==============================] - 3s - loss: 1.3905 - acc: 0.5037 - val_loss: 1.5225 - val_acc: 0.4668
Epoch 19/100
40000/40000 [==============================] - 3s - loss: 1.3875 - acc: 0.5054 - val_loss: 1.5259 - val_acc: 0.4572
Epoch 20/100
40000/40000 [==============================] - 3s - loss: 1.3794 - acc: 0.5083 - val_loss: 1.5080 - val_acc: 0.4736
Epoch 21/100
40000/40000 [==============================] - 3s - loss: 1.3746 - acc: 0.5106 - val_loss: 1.4812 - val_acc: 0.4802
Epoch 22/100
40000/40000 [==============================] - 3s - loss: 1.3653 - acc: 0.5134 - val_loss: 1.4931 - val_acc: 0.4818
Epoch 23/100
40000/40000 [==============================] - 3s - loss: 1.3498 - acc: 0.5168 - val_loss: 1.4983 - val_acc: 0.4724
Epoch 24/100
40000/40000 [==============================] - 3s - loss: 1.3447 - acc: 0.5193 - val_loss: 1.5097 - val_acc: 0.4740
Epoch 25/100
40000/40000 [==============================] - 3s - loss: 1.3353 - acc: 0.5252 - val_loss: 1.5017 - val_acc: 0.4769
Epoch 26/100
40000/40000 [==============================] - 3s - loss: 1.3334 - acc: 0.5244 - val_loss: 1.5060 - val_acc: 0.4720
Epoch 27/100
40000/40000 [==============================] - 3s - loss: 1.3275 - acc: 0.5262 - val_loss: 1.4972 - val_acc: 0.4771
Epoch 28/100
40000/40000 [==============================] - 3s - loss: 1.3186 - acc: 0.5280 - val_loss: 1.5079 - val_acc: 0.4717
Epoch 29/100
40000/40000 [==============================] - 3s - loss: 1.3143 - acc: 0.5298 - val_loss: 1.4692 - val_acc: 0.4889
Epoch 30/100
40000/40000 [==============================] - 3s - loss: 1.3077 - acc: 0.5316 - val_loss: 1.4968 - val_acc: 0.4767
Epoch 31/100
40000/40000 [==============================] - 3s - loss: 1.3012 - acc: 0.5343 - val_loss: 1.4721 - val_acc: 0.4898
Epoch 32/100
40000/40000 [==============================] - 3s - loss: 1.2938 - acc: 0.5380 - val_loss: 1.5142 - val_acc: 0.4654
Epoch 33/100
40000/40000 [==============================] - 3s - loss: 1.2959 - acc: 0.5374 - val_loss: 1.4824 - val_acc: 0.4808
Epoch 34/100
40000/40000 [==============================] - 3s - loss: 1.2813 - acc: 0.5415 - val_loss: 1.5182 - val_acc: 0.4744
Epoch 35/100
40000/40000 [==============================] - 3s - loss: 1.2811 - acc: 0.5419 - val_loss: 1.4958 - val_acc: 0.4833
Epoch 36/100
40000/40000 [==============================] - 3s - loss: 1.2824 - acc: 0.5394 - val_loss: 1.5212 - val_acc: 0.4727
Epoch 37/100
40000/40000 [==============================] - 3s - loss: 1.2761 - acc: 0.5435 - val_loss: 1.4993 - val_acc: 0.4785
Epoch 38/100
40000/40000 [==============================] - 3s - loss: 1.2682 - acc: 0.5470 - val_loss: 1.4841 - val_acc: 0.4818
Epoch 39/100
40000/40000 [==============================] - 3s - loss: 1.2648 - acc: 0.5489 - val_loss: 1.4876 - val_acc: 0.4837
Epoch 40/100
40000/40000 [==============================] - 3s - loss: 1.2631 - acc: 0.5455 - val_loss: 1.5687 - val_acc: 0.4587
Epoch 41/100
40000/40000 [==============================] - 3s - loss: 1.2567 - acc: 0.5475 - val_loss: 1.4861 - val_acc: 0.4842
Epoch 42/100
40000/40000 [==============================] - 3s - loss: 1.2573 - acc: 0.5506 - val_loss: 1.5065 - val_acc: 0.4803
Epoch 43/100
40000/40000 [==============================] - 3s - loss: 1.2448 - acc: 0.5564 - val_loss: 1.4744 - val_acc: 0.4901
Epoch 44/100
40000/40000 [==============================] - 3s - loss: 1.2420 - acc: 0.5553 - val_loss: 1.4814 - val_acc: 0.4857
Epoch 45/100
40000/40000 [==============================] - 3s - loss: 1.2411 - acc: 0.5547 - val_loss: 1.5081 - val_acc: 0.4789
Epoch 46/100
40000/40000 [==============================] - 3s - loss: 1.2446 - acc: 0.5542 - val_loss: 1.4918 - val_acc: 0.4874
Epoch 47/100
40000/40000 [==============================] - 3s - loss: 1.2344 - acc: 0.5594 - val_loss: 1.5107 - val_acc: 0.4812
Epoch 48/100
40000/40000 [==============================] - 3s - loss: 1.2268 - acc: 0.5596 - val_loss: 1.4899 - val_acc: 0.4867
Epoch 49/100
40000/40000 [==============================] - 3s - loss: 1.2272 - acc: 0.5601 - val_loss: 1.5282 - val_acc: 0.4783
Epoch 50/100
40000/40000 [==============================] - 3s - loss: 1.2298 - acc: 0.5613 - val_loss: 1.4800 - val_acc: 0.4873
Epoch 51/100
40000/40000 [==============================] - 3s - loss: 1.2206 - acc: 0.5616 - val_loss: 1.5184 - val_acc: 0.4786
Epoch 52/100
40000/40000 [==============================] - 3s - loss: 1.2228 - acc: 0.5620 - val_loss: 1.4968 - val_acc: 0.4833
Epoch 53/100
40000/40000 [==============================] - 3s - loss: 1.2166 - acc: 0.5630 - val_loss: 1.5038 - val_acc: 0.4889
Epoch 54/100
40000/40000 [==============================] - 3s - loss: 1.2103 - acc: 0.5667 - val_loss: 1.4928 - val_acc: 0.4910
Epoch 55/100
40000/40000 [==============================] - 3s - loss: 1.2046 - acc: 0.5682 - val_loss: 1.4949 - val_acc: 0.4870
Epoch 56/100
40000/40000 [==============================] - 3s - loss: 1.2052 - acc: 0.5694 - val_loss: 1.5269 - val_acc: 0.4750
Epoch 57/100
40000/40000 [==============================] - 3s - loss: 1.2020 - acc: 0.5667 - val_loss: 1.5128 - val_acc: 0.4813
Epoch 58/100
40000/40000 [==============================] - 3s - loss: 1.2042 - acc: 0.5673 - val_loss: 1.5127 - val_acc: 0.4832
Epoch 59/100
40000/40000 [==============================] - 3s - loss: 1.1990 - acc: 0.5706 - val_loss: 1.5411 - val_acc: 0.4633
Epoch 60/100
40000/40000 [==============================] - 3s - loss: 1.1956 - acc: 0.5715 - val_loss: 1.5006 - val_acc: 0.4815
Epoch 61/100
40000/40000 [==============================] - 3s - loss: 1.1922 - acc: 0.5714 - val_loss: 1.5381 - val_acc: 0.4740
Epoch 62/100
40000/40000 [==============================] - 3s - loss: 1.1926 - acc: 0.5719 - val_loss: 1.4985 - val_acc: 0.4881
Epoch 63/100
40000/40000 [==============================] - 3s - loss: 1.1882 - acc: 0.5746 - val_loss: 1.5147 - val_acc: 0.4835
Epoch 64/100
40000/40000 [==============================] - 3s - loss: 1.1890 - acc: 0.5733 - val_loss: 1.5216 - val_acc: 0.4835
Epoch 65/100
40000/40000 [==============================] - 3s - loss: 1.1802 - acc: 0.5773 - val_loss: 1.5411 - val_acc: 0.4738
Epoch 66/100
40000/40000 [==============================] - 3s - loss: 1.1848 - acc: 0.5750 - val_loss: 1.4982 - val_acc: 0.4911
Epoch 67/100
40000/40000 [==============================] - 3s - loss: 1.1794 - acc: 0.5767 - val_loss: 1.5263 - val_acc: 0.4773
Epoch 68/100
40000/40000 [==============================] - 3s - loss: 1.1737 - acc: 0.5799 - val_loss: 1.5225 - val_acc: 0.4804
Epoch 69/100
40000/40000 [==============================] - 3s - loss: 1.1736 - acc: 0.5794 - val_loss: 1.5081 - val_acc: 0.4844
Epoch 70/100
40000/40000 [==============================] - 3s - loss: 1.1687 - acc: 0.5792 - val_loss: 1.5430 - val_acc: 0.4756
Epoch 71/100
40000/40000 [==============================] - 3s - loss: 1.1723 - acc: 0.5798 - val_loss: 1.5174 - val_acc: 0.4827
Epoch 72/100
40000/40000 [==============================] - 3s - loss: 1.1668 - acc: 0.5815 - val_loss: 1.4909 - val_acc: 0.4989
Epoch 73/100
40000/40000 [==============================] - 3s - loss: 1.1687 - acc: 0.5810 - val_loss: 1.5423 - val_acc: 0.4805
Epoch 74/100
40000/40000 [==============================] - 3s - loss: 1.1641 - acc: 0.5813 - val_loss: 1.5440 - val_acc: 0.4768
Epoch 75/100
40000/40000 [==============================] - 3s - loss: 1.1586 - acc: 0.5821 - val_loss: 1.5103 - val_acc: 0.4926
Epoch 76/100
40000/40000 [==============================] - 3s - loss: 1.1576 - acc: 0.5868 - val_loss: 1.5381 - val_acc: 0.4787
Epoch 77/100
40000/40000 [==============================] - 3s - loss: 1.1547 - acc: 0.5866 - val_loss: 1.5574 - val_acc: 0.4778
Epoch 78/100
40000/40000 [==============================] - 3s - loss: 1.1537 - acc: 0.5855 - val_loss: 1.5164 - val_acc: 0.4915
Epoch 79/100
40000/40000 [==============================] - 3s - loss: 1.1545 - acc: 0.5849 - val_loss: 1.5261 - val_acc: 0.4865
Epoch 80/100
40000/40000 [==============================] - 3s - loss: 1.1508 - acc: 0.5861 - val_loss: 1.5217 - val_acc: 0.4830
Epoch 81/100
40000/40000 [==============================] - 3s - loss: 1.1405 - acc: 0.5919 - val_loss: 1.5190 - val_acc: 0.4854
Epoch 82/100
40000/40000 [==============================] - 3s - loss: 1.1405 - acc: 0.5905 - val_loss: 1.5391 - val_acc: 0.4802
Epoch 83/100
40000/40000 [==============================] - 3s - loss: 1.1466 - acc: 0.5878 - val_loss: 1.5402 - val_acc: 0.4773
Epoch 84/100
40000/40000 [==============================] - 3s - loss: 1.1379 - acc: 0.5927 - val_loss: 1.5668 - val_acc: 0.4727
Epoch 85/100
40000/40000 [==============================] - 3s - loss: 1.1393 - acc: 0.5891 - val_loss: 1.5865 - val_acc: 0.4718
Epoch 86/100
40000/40000 [==============================] - 3s - loss: 1.1350 - acc: 0.5920 - val_loss: 1.5974 - val_acc: 0.4698
Epoch 87/100
40000/40000 [==============================] - 3s - loss: 1.1364 - acc: 0.5920 - val_loss: 1.5756 - val_acc: 0.4796
Epoch 88/100
40000/40000 [==============================] - 3s - loss: 1.1361 - acc: 0.5952 - val_loss: 1.5955 - val_acc: 0.4759
Epoch 89/100
40000/40000 [==============================] - 3s - loss: 1.1298 - acc: 0.5950 - val_loss: 1.5473 - val_acc: 0.4767
Epoch 90/100
40000/40000 [==============================] - 3s - loss: 1.1239 - acc: 0.5976 - val_loss: 1.5842 - val_acc: 0.4677
Epoch 91/100
40000/40000 [==============================] - 3s - loss: 1.1237 - acc: 0.5970 - val_loss: 1.5618 - val_acc: 0.4715
Epoch 92/100
40000/40000 [==============================] - 3s - loss: 1.1173 - acc: 0.5971 - val_loss: 1.5536 - val_acc: 0.4767
Epoch 93/100
40000/40000 [==============================] - 3s - loss: 1.1240 - acc: 0.5965 - val_loss: 1.5515 - val_acc: 0.4846
Epoch 94/100
40000/40000 [==============================] - 3s - loss: 1.1233 - acc: 0.5955 - val_loss: 1.5695 - val_acc: 0.4729
Epoch 95/100
40000/40000 [==============================] - 3s - loss: 1.1208 - acc: 0.5975 - val_loss: 1.5434 - val_acc: 0.4809
Epoch 96/100
40000/40000 [==============================] - 3s - loss: 1.1130 - acc: 0.6009 - val_loss: 1.5763 - val_acc: 0.4756
Epoch 97/100
40000/40000 [==============================] - 3s - loss: 1.1119 - acc: 0.5996 - val_loss: 1.5605 - val_acc: 0.4804
Epoch 98/100
40000/40000 [==============================] - 3s - loss: 1.1069 - acc: 0.6004 - val_loss: 1.5826 - val_acc: 0.4788
Epoch 99/100
40000/40000 [==============================] - 3s - loss: 1.1147 - acc: 0.5999 - val_loss: 1.5890 - val_acc: 0.4725
Epoch 100/100
40000/40000 [==============================] - 3s - loss: 1.1056 - acc: 0.6034 - val_loss: 1.5940 - val_acc: 0.4744
10000/10000 [==============================] - 0s
Test Loss and Accuracy -> [1.5685403978824615, 0.47779998332262041]
In [ ]:
Content source: jskDr/keraspp
Similar notebooks: