Skip to content

Instantly share code, notes, and snippets.

@ntuaha
Created April 18, 2018 14:27
Show Gist options
  • Save ntuaha/306b9c06beaec65e8c9229f27f389368 to your computer and use it in GitHub Desktop.
Save ntuaha/306b9c06beaec65e8c9229f27f389368 to your computer and use it in GitHub Desktop.
簡單的keras 建立NN使用
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 引入函式庫"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [],
"source": [
"import keras\n",
"import numpy as np\n",
"import matplotlib.image as mpimg\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"from keras.models import Sequential\n",
"from keras.optimizers import SGD\n",
"from keras.layers import Dense,Activation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 準備資料"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[0.35471668 0.99668314 0.73452703]\n",
" [0.1680397 0.94727363 0.54432822]\n",
" [0.88528774 0.06857574 0.18358896]\n",
" [0.69386193 0.16970091 0.47123613]\n",
" [0.65693247 0.60799893 0.24517993]\n",
" [0.6838092 0.50667814 0.98034921]\n",
" [0.4877734 0.82361669 0.64774777]\n",
" [0.24354492 0.73832624 0.83813478]\n",
" [0.92966513 0.82803032 0.63501892]\n",
" [0.60375728 0.86536668 0.85942701]\n",
" [0.75368191 0.71390274 0.95058591]\n",
" [0.8128786 0.09127718 0.47652219]\n",
" [0.72162538 0.49080632 0.02130899]\n",
" [0.59223099 0.40585661 0.57198501]\n",
" [0.19045803 0.41312417 0.31557212]\n",
" [0.78984058 0.03924818 0.43795238]\n",
" [0.52322201 0.11143202 0.34959199]\n",
" [0.76011918 0.76164857 0.23219449]\n",
" [0.93281133 0.03956692 0.98227201]\n",
" [0.10031072 0.90782506 0.46973288]\n",
" [0.92859439 0.54186092 0.09544955]\n",
" [0.10168597 0.34083886 0.75484949]\n",
" [0.70926608 0.84845125 0.02072552]\n",
" [0.45273312 0.24397941 0.69131462]\n",
" [0.28848077 0.25540152 0.15065739]\n",
" [0.80740341 0.18764578 0.91090482]\n",
" [0.56175593 0.18918231 0.79860506]\n",
" [0.00526356 0.18293253 0.77738159]\n",
" [0.29321948 0.67867614 0.37539423]\n",
" [0.19902188 0.08193621 0.03122213]\n",
" [0.8961524 0.23708698 0.54253997]\n",
" [0.62654386 0.00700719 0.44228653]\n",
" [0.14640004 0.19210824 0.62185801]\n",
" [0.63102377 0.59375359 0.31793796]\n",
" [0.00700157 0.12527164 0.76416698]\n",
" [0.55031129 0.80306728 0.43365561]\n",
" [0.34247867 0.110251 0.54068152]\n",
" [0.56164781 0.03792802 0.08758714]\n",
" [0.9989962 0.91651953 0.48687216]\n",
" [0.95381958 0.81423713 0.82767706]\n",
" [0.19032836 0.20694103 0.72459476]\n",
" [0.60439015 0.32164388 0.48484764]\n",
" [0.19012885 0.97487447 0.47533027]\n",
" [0.53285415 0.26842953 0.59962472]\n",
" [0.24837265 0.80189369 0.0821013 ]\n",
" [0.00671986 0.06533059 0.72486128]\n",
" [0.5234456 0.55055938 0.00880274]\n",
" [0.94045599 0.16560932 0.17950489]\n",
" [0.16184636 0.02924914 0.55523164]\n",
" [0.0321123 0.96332208 0.39750906]\n",
" [0.65992573 0.42663882 0.4489657 ]\n",
" [0.86032603 0.61946252 0.42581206]\n",
" [0.1712264 0.50316463 0.49671755]\n",
" [0.91243688 0.21645754 0.70170072]\n",
" [0.11215363 0.07606709 0.1636667 ]\n",
" [0.81540531 0.4778003 0.92010753]\n",
" [0.6240937 0.12851115 0.2804546 ]\n",
" [0.78167278 0.79965955 0.57603612]\n",
" [0.46367021 0.15736839 0.97044089]\n",
" [0.94138342 0.60285304 0.55625066]\n",
" [0.76901084 0.97325348 0.48634968]\n",
" [0.06321516 0.89308014 0.65940213]\n",
" [0.30944678 0.84408707 0.26263877]\n",
" [0.77279944 0.82237229 0.76255318]\n",
" [0.72665033 0.6643545 0.2487575 ]\n",
" [0.93279037 0.88913447 0.64049429]\n",
" [0.57684869 0.71039008 0.9816743 ]\n",
" [0.34334585 0.93508403 0.27689263]\n",
" [0.75913305 0.10376487 0.55907005]\n",
" [0.06351981 0.26549494 0.90013198]\n",
" [0.15640987 0.42352831 0.71263076]\n",
" [0.70958942 0.70329507 0.93543385]\n",
" [0.92715078 0.02863862 0.69994215]\n",
" [0.67886713 0.36927464 0.05471201]\n",
" [0.73816701 0.43192416 0.22727814]\n",
" [0.10709787 0.7535443 0.03064221]\n",
" [0.43277799 0.48739553 0.04297754]\n",
" [0.95683462 0.26472526 0.7590205 ]\n",
" [0.82420329 0.40587686 0.44684381]\n",
" [0.80278419 0.51375348 0.67933815]\n",
" [0.95835169 0.12022755 0.35679943]\n",
" [0.48710484 0.87860839 0.73654358]\n",
" [0.66138302 0.86810073 0.04688627]\n",
" [0.86976452 0.60940896 0.72753796]\n",
" [0.62456889 0.79600853 0.14657427]\n",
" [0.23912777 0.47552672 0.75310572]\n",
" [0.67495959 0.4428251 0.28136478]\n",
" [0.76408305 0.89800248 0.80901123]\n",
" [0.08742926 0.02066684 0.48651604]\n",
" [0.26201893 0.73883572 0.90844481]\n",
" [0.09520706 0.40492579 0.25592455]\n",
" [0.98968039 0.175326 0.19745351]\n",
" [0.78319396 0.78225996 0.04966528]\n",
" [0.16792236 0.3403519 0.69010076]\n",
" [0.39427658 0.33921737 0.44186043]\n",
" [0.47770009 0.50124897 0.97088889]\n",
" [0.45546608 0.16080554 0.09713255]\n",
" [0.07038793 0.7481914 0.38392162]\n",
" [0.5343255 0.64594361 0.27514227]\n",
" [0.77831165 0.51099035 0.47778724]]\n"
]
}
],
"source": [
"X = np.random.rand(100,3)\n",
"print(X)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"W = np.array([0.4,0.5,0.1])"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1 1 0 0 1 1 1 1 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0\n",
" 0 1 1 0 0 1 0 1 0 0 0 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0\n",
" 1 0 0 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 0 0 1 0 0 1 1]\n",
"(100,)\n"
]
}
],
"source": [
"Y = np.dot(X,W)\n",
"def f(x):\n",
" if x>0.5:\n",
" return 1\n",
" else:\n",
" return 0\n",
"vf = np.vectorize(f)\n",
"Y = vf(Y)\n",
"print(Y)\n",
"print(Y.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 準備資料\n",
"我們擁有一個$X$(100,3)與$Y$(100,),現在要準備建立一個神經網路來進行模型建置.首先是要讓抽出 train data set 與 test data set,比例為 7:3 然後要將$Y$的資料用 one-hot vector作轉換,因為這裡的資料只有有過1與沒過0.所以透過 keras.to_categorical 就可以直接處理成功."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 資料參數"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"size = 100\n",
"train_size = 70"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 抽出測試資料集"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"mask_index = np.random.choice(size,train_size,replace=False)\n",
"mask = np.ones(size,dtype=bool)\n",
"mask[mask_index] = False\n",
"mask = ~mask"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"x_train = X[mask]\n",
"y_train = keras.utils.to_categorical(Y[mask], num_classes=2)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"x_test = X[~mask]\n",
"y_test = keras.utils.to_categorical(Y[~mask], num_classes=2)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(70, 3)\n",
"(70, 2)\n",
"(30, 3)\n",
"(30, 2)\n"
]
}
],
"source": [
"print(x_train.shape)\n",
"print(y_train.shape)\n",
"print(x_test.shape)\n",
"print(y_test.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 設計模型"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"batch_size = 10 ## 每次計算都用10個樣本\n",
"epochs = 100 ## 1 epoch 等於 70訓練樣本 / 10 每次計算的樣本數 = 7 次計算 = 1 epoch\n"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"dense_6 (Dense) (None, 10) 40 \n",
"_________________________________________________________________\n",
"activation_5 (Activation) (None, 10) 0 \n",
"_________________________________________________________________\n",
"dense_7 (Dense) (None, 2) 22 \n",
"_________________________________________________________________\n",
"activation_6 (Activation) (None, 2) 0 \n",
"=================================================================\n",
"Total params: 62\n",
"Trainable params: 62\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"model = Sequential()\n",
"model.add(Dense(10, input_shape=(3,)))\n",
"model.add(Activation('sigmoid'))\n",
"model.add(Dense(2, use_bias=True))\n",
"model.add(Activation('softmax')) \n",
"model.summary() #列出模型概況\n",
"# 參數學習\n",
"sgd = SGD(lr=0.01, momentum=0, nesterov=False)\n",
"# 誤差計算\n",
"model.compile(loss='categorical_crossentropy',optimizer=sgd,metrics=['accuracy'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 訓練"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 70 samples, validate on 30 samples\n",
"Epoch 1/100\n",
"70/70 [==============================] - 0s 2ms/step - loss: 0.9266 - acc: 0.4571 - val_loss: 0.9176 - val_acc: 0.4667\n",
"Epoch 2/100\n",
"70/70 [==============================] - 0s 177us/step - loss: 0.8835 - acc: 0.4571 - val_loss: 0.8777 - val_acc: 0.4667\n",
"Epoch 3/100\n",
"70/70 [==============================] - 0s 212us/step - loss: 0.8477 - acc: 0.4571 - val_loss: 0.8442 - val_acc: 0.4667\n",
"Epoch 4/100\n",
"70/70 [==============================] - 0s 197us/step - loss: 0.8173 - acc: 0.4571 - val_loss: 0.8165 - val_acc: 0.4667\n",
"Epoch 5/100\n",
"70/70 [==============================] - 0s 207us/step - loss: 0.7923 - acc: 0.4571 - val_loss: 0.7935 - val_acc: 0.4667\n",
"Epoch 6/100\n",
"70/70 [==============================] - 0s 217us/step - loss: 0.7722 - acc: 0.4571 - val_loss: 0.7749 - val_acc: 0.4667\n",
"Epoch 7/100\n",
"70/70 [==============================] - 0s 233us/step - loss: 0.7558 - acc: 0.4571 - val_loss: 0.7599 - val_acc: 0.4667\n",
"Epoch 8/100\n",
"70/70 [==============================] - 0s 221us/step - loss: 0.7420 - acc: 0.4571 - val_loss: 0.7477 - val_acc: 0.4667\n",
"Epoch 9/100\n",
"70/70 [==============================] - 0s 224us/step - loss: 0.7317 - acc: 0.4571 - val_loss: 0.7378 - val_acc: 0.4667\n",
"Epoch 10/100\n",
"70/70 [==============================] - 0s 229us/step - loss: 0.7232 - acc: 0.4571 - val_loss: 0.7300 - val_acc: 0.4667\n",
"Epoch 11/100\n",
"70/70 [==============================] - 0s 235us/step - loss: 0.7163 - acc: 0.4571 - val_loss: 0.7234 - val_acc: 0.4667\n",
"Epoch 12/100\n",
"70/70 [==============================] - 0s 245us/step - loss: 0.7105 - acc: 0.4714 - val_loss: 0.7182 - val_acc: 0.4667\n",
"Epoch 13/100\n",
"70/70 [==============================] - 0s 270us/step - loss: 0.7063 - acc: 0.5000 - val_loss: 0.7140 - val_acc: 0.4667\n",
"Epoch 14/100\n",
"70/70 [==============================] - 0s 186us/step - loss: 0.7024 - acc: 0.5000 - val_loss: 0.7106 - val_acc: 0.4667\n",
"Epoch 15/100\n",
"70/70 [==============================] - 0s 184us/step - loss: 0.6994 - acc: 0.5571 - val_loss: 0.7078 - val_acc: 0.4333\n",
"Epoch 16/100\n",
"70/70 [==============================] - 0s 179us/step - loss: 0.6973 - acc: 0.5857 - val_loss: 0.7055 - val_acc: 0.3667\n",
"Epoch 17/100\n",
"70/70 [==============================] - 0s 262us/step - loss: 0.6957 - acc: 0.4857 - val_loss: 0.7037 - val_acc: 0.3333\n",
"Epoch 18/100\n",
"70/70 [==============================] - 0s 217us/step - loss: 0.6935 - acc: 0.4857 - val_loss: 0.7022 - val_acc: 0.3000\n",
"Epoch 19/100\n",
"70/70 [==============================] - 0s 213us/step - loss: 0.6929 - acc: 0.4714 - val_loss: 0.7009 - val_acc: 0.3000\n",
"Epoch 20/100\n",
"70/70 [==============================] - 0s 211us/step - loss: 0.6915 - acc: 0.4857 - val_loss: 0.6998 - val_acc: 0.3333\n",
"Epoch 21/100\n",
"70/70 [==============================] - 0s 196us/step - loss: 0.6903 - acc: 0.5000 - val_loss: 0.6990 - val_acc: 0.3333\n",
"Epoch 22/100\n",
"70/70 [==============================] - 0s 183us/step - loss: 0.6901 - acc: 0.5143 - val_loss: 0.6982 - val_acc: 0.4333\n",
"Epoch 23/100\n",
"70/70 [==============================] - 0s 180us/step - loss: 0.6894 - acc: 0.5429 - val_loss: 0.6975 - val_acc: 0.4333\n",
"Epoch 24/100\n",
"70/70 [==============================] - 0s 231us/step - loss: 0.6888 - acc: 0.5286 - val_loss: 0.6970 - val_acc: 0.4333\n",
"Epoch 25/100\n",
"70/70 [==============================] - 0s 229us/step - loss: 0.6879 - acc: 0.5286 - val_loss: 0.6964 - val_acc: 0.5333\n",
"Epoch 26/100\n",
"70/70 [==============================] - 0s 215us/step - loss: 0.6877 - acc: 0.5143 - val_loss: 0.6959 - val_acc: 0.5667\n",
"Epoch 27/100\n",
"70/70 [==============================] - 0s 226us/step - loss: 0.6881 - acc: 0.4857 - val_loss: 0.6955 - val_acc: 0.6333\n",
"Epoch 28/100\n",
"70/70 [==============================] - 0s 193us/step - loss: 0.6869 - acc: 0.5286 - val_loss: 0.6951 - val_acc: 0.6333\n",
"Epoch 29/100\n",
"70/70 [==============================] - 0s 194us/step - loss: 0.6868 - acc: 0.5286 - val_loss: 0.6948 - val_acc: 0.6333\n",
"Epoch 30/100\n",
"70/70 [==============================] - 0s 211us/step - loss: 0.6859 - acc: 0.5429 - val_loss: 0.6944 - val_acc: 0.6333\n",
"Epoch 31/100\n",
"70/70 [==============================] - 0s 206us/step - loss: 0.6867 - acc: 0.5143 - val_loss: 0.6941 - val_acc: 0.6000\n",
"Epoch 32/100\n",
"70/70 [==============================] - 0s 198us/step - loss: 0.6861 - acc: 0.5143 - val_loss: 0.6938 - val_acc: 0.6000\n",
"Epoch 33/100\n",
"70/70 [==============================] - 0s 213us/step - loss: 0.6855 - acc: 0.5429 - val_loss: 0.6935 - val_acc: 0.6333\n",
"Epoch 34/100\n",
"70/70 [==============================] - 0s 225us/step - loss: 0.6855 - acc: 0.5429 - val_loss: 0.6932 - val_acc: 0.6333\n",
"Epoch 35/100\n",
"70/70 [==============================] - 0s 203us/step - loss: 0.6846 - acc: 0.5714 - val_loss: 0.6929 - val_acc: 0.6333\n",
"Epoch 36/100\n",
"70/70 [==============================] - 0s 180us/step - loss: 0.6843 - acc: 0.5714 - val_loss: 0.6926 - val_acc: 0.6333\n",
"Epoch 37/100\n",
"70/70 [==============================] - 0s 208us/step - loss: 0.6844 - acc: 0.5429 - val_loss: 0.6924 - val_acc: 0.6333\n",
"Epoch 38/100\n",
"70/70 [==============================] - 0s 186us/step - loss: 0.6837 - acc: 0.5571 - val_loss: 0.6921 - val_acc: 0.6333\n",
"Epoch 39/100\n",
"70/70 [==============================] - 0s 215us/step - loss: 0.6835 - acc: 0.5714 - val_loss: 0.6918 - val_acc: 0.6333\n",
"Epoch 40/100\n",
"70/70 [==============================] - 0s 225us/step - loss: 0.6838 - acc: 0.5714 - val_loss: 0.6916 - val_acc: 0.6333\n",
"Epoch 41/100\n",
"70/70 [==============================] - 0s 187us/step - loss: 0.6829 - acc: 0.5571 - val_loss: 0.6913 - val_acc: 0.6333\n",
"Epoch 42/100\n",
"70/70 [==============================] - 0s 254us/step - loss: 0.6833 - acc: 0.5571 - val_loss: 0.6911 - val_acc: 0.6333\n",
"Epoch 43/100\n",
"70/70 [==============================] - 0s 214us/step - loss: 0.6831 - acc: 0.5571 - val_loss: 0.6908 - val_acc: 0.6333\n",
"Epoch 44/100\n",
"70/70 [==============================] - 0s 201us/step - loss: 0.6829 - acc: 0.5571 - val_loss: 0.6906 - val_acc: 0.6333\n",
"Epoch 45/100\n",
"70/70 [==============================] - 0s 216us/step - loss: 0.6823 - acc: 0.5429 - val_loss: 0.6903 - val_acc: 0.6333\n",
"Epoch 46/100\n",
"70/70 [==============================] - 0s 188us/step - loss: 0.6827 - acc: 0.5429 - val_loss: 0.6901 - val_acc: 0.6333\n",
"Epoch 47/100\n",
"70/70 [==============================] - 0s 216us/step - loss: 0.6820 - acc: 0.5571 - val_loss: 0.6898 - val_acc: 0.6333\n",
"Epoch 48/100\n",
"70/70 [==============================] - 0s 227us/step - loss: 0.6827 - acc: 0.5571 - val_loss: 0.6896 - val_acc: 0.6333\n",
"Epoch 49/100\n",
"70/70 [==============================] - 0s 193us/step - loss: 0.6823 - acc: 0.5429 - val_loss: 0.6894 - val_acc: 0.6333\n",
"Epoch 50/100\n",
"70/70 [==============================] - 0s 233us/step - loss: 0.6808 - acc: 0.5571 - val_loss: 0.6891 - val_acc: 0.6333\n",
"Epoch 51/100\n",
"70/70 [==============================] - 0s 196us/step - loss: 0.6806 - acc: 0.5571 - val_loss: 0.6889 - val_acc: 0.6333\n",
"Epoch 52/100\n",
"70/70 [==============================] - 0s 235us/step - loss: 0.6814 - acc: 0.5429 - val_loss: 0.6886 - val_acc: 0.6333\n",
"Epoch 53/100\n",
"70/70 [==============================] - 0s 202us/step - loss: 0.6806 - acc: 0.5571 - val_loss: 0.6884 - val_acc: 0.6333\n",
"Epoch 54/100\n",
"70/70 [==============================] - 0s 169us/step - loss: 0.6798 - acc: 0.5571 - val_loss: 0.6881 - val_acc: 0.6333\n",
"Epoch 55/100\n",
"70/70 [==============================] - 0s 194us/step - loss: 0.6803 - acc: 0.5429 - val_loss: 0.6879 - val_acc: 0.6333\n",
"Epoch 56/100\n",
"70/70 [==============================] - 0s 183us/step - loss: 0.6805 - acc: 0.5571 - val_loss: 0.6877 - val_acc: 0.6333\n",
"Epoch 57/100\n",
"70/70 [==============================] - 0s 210us/step - loss: 0.6793 - acc: 0.5714 - val_loss: 0.6874 - val_acc: 0.6333\n",
"Epoch 58/100\n",
"70/70 [==============================] - 0s 198us/step - loss: 0.6789 - acc: 0.5571 - val_loss: 0.6872 - val_acc: 0.6333\n",
"Epoch 59/100\n",
"70/70 [==============================] - 0s 199us/step - loss: 0.6790 - acc: 0.5571 - val_loss: 0.6869 - val_acc: 0.6333\n",
"Epoch 60/100\n",
"70/70 [==============================] - 0s 192us/step - loss: 0.6788 - acc: 0.5714 - val_loss: 0.6867 - val_acc: 0.6333\n",
"Epoch 61/100\n",
"70/70 [==============================] - 0s 204us/step - loss: 0.6788 - acc: 0.5571 - val_loss: 0.6864 - val_acc: 0.6333\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 62/100\n",
"70/70 [==============================] - 0s 180us/step - loss: 0.6786 - acc: 0.5571 - val_loss: 0.6862 - val_acc: 0.6333\n",
"Epoch 63/100\n",
"70/70 [==============================] - 0s 201us/step - loss: 0.6780 - acc: 0.5571 - val_loss: 0.6859 - val_acc: 0.6333\n",
"Epoch 64/100\n",
"70/70 [==============================] - 0s 188us/step - loss: 0.6787 - acc: 0.5714 - val_loss: 0.6857 - val_acc: 0.6333\n",
"Epoch 65/100\n",
"70/70 [==============================] - 0s 190us/step - loss: 0.6773 - acc: 0.5571 - val_loss: 0.6854 - val_acc: 0.6333\n",
"Epoch 66/100\n",
"70/70 [==============================] - 0s 217us/step - loss: 0.6778 - acc: 0.5571 - val_loss: 0.6852 - val_acc: 0.6333\n",
"Epoch 67/100\n",
"70/70 [==============================] - 0s 193us/step - loss: 0.6769 - acc: 0.5571 - val_loss: 0.6850 - val_acc: 0.6333\n",
"Epoch 68/100\n",
"70/70 [==============================] - 0s 204us/step - loss: 0.6778 - acc: 0.5429 - val_loss: 0.6847 - val_acc: 0.6333\n",
"Epoch 69/100\n",
"70/70 [==============================] - 0s 196us/step - loss: 0.6770 - acc: 0.5571 - val_loss: 0.6845 - val_acc: 0.6333\n",
"Epoch 70/100\n",
"70/70 [==============================] - 0s 191us/step - loss: 0.6771 - acc: 0.5571 - val_loss: 0.6842 - val_acc: 0.6333\n",
"Epoch 71/100\n",
"70/70 [==============================] - 0s 187us/step - loss: 0.6762 - acc: 0.5571 - val_loss: 0.6840 - val_acc: 0.6333\n",
"Epoch 72/100\n",
"70/70 [==============================] - 0s 198us/step - loss: 0.6762 - acc: 0.5571 - val_loss: 0.6838 - val_acc: 0.6333\n",
"Epoch 73/100\n",
"70/70 [==============================] - 0s 193us/step - loss: 0.6761 - acc: 0.5714 - val_loss: 0.6835 - val_acc: 0.6333\n",
"Epoch 74/100\n",
"70/70 [==============================] - 0s 181us/step - loss: 0.6761 - acc: 0.5571 - val_loss: 0.6833 - val_acc: 0.6667\n",
"Epoch 75/100\n",
"70/70 [==============================] - 0s 189us/step - loss: 0.6753 - acc: 0.5571 - val_loss: 0.6830 - val_acc: 0.6667\n",
"Epoch 76/100\n",
"70/70 [==============================] - 0s 196us/step - loss: 0.6756 - acc: 0.5571 - val_loss: 0.6828 - val_acc: 0.6667\n",
"Epoch 77/100\n",
"70/70 [==============================] - 0s 186us/step - loss: 0.6749 - acc: 0.5714 - val_loss: 0.6825 - val_acc: 0.6667\n",
"Epoch 78/100\n",
"70/70 [==============================] - 0s 188us/step - loss: 0.6747 - acc: 0.5571 - val_loss: 0.6823 - val_acc: 0.6667\n",
"Epoch 79/100\n",
"70/70 [==============================] - 0s 190us/step - loss: 0.6741 - acc: 0.5857 - val_loss: 0.6821 - val_acc: 0.6667\n",
"Epoch 80/100\n",
"70/70 [==============================] - 0s 186us/step - loss: 0.6744 - acc: 0.5857 - val_loss: 0.6818 - val_acc: 0.6667\n",
"Epoch 81/100\n",
"70/70 [==============================] - 0s 190us/step - loss: 0.6738 - acc: 0.5571 - val_loss: 0.6816 - val_acc: 0.6667\n",
"Epoch 82/100\n",
"70/70 [==============================] - 0s 193us/step - loss: 0.6747 - acc: 0.5714 - val_loss: 0.6813 - val_acc: 0.6667\n",
"Epoch 83/100\n",
"70/70 [==============================] - 0s 197us/step - loss: 0.6738 - acc: 0.5714 - val_loss: 0.6811 - val_acc: 0.6667\n",
"Epoch 84/100\n",
"70/70 [==============================] - 0s 183us/step - loss: 0.6741 - acc: 0.5571 - val_loss: 0.6808 - val_acc: 0.6667\n",
"Epoch 85/100\n",
"70/70 [==============================] - 0s 178us/step - loss: 0.6726 - acc: 0.5714 - val_loss: 0.6806 - val_acc: 0.6667\n",
"Epoch 86/100\n",
"70/70 [==============================] - 0s 193us/step - loss: 0.6731 - acc: 0.5571 - val_loss: 0.6803 - val_acc: 0.6667\n",
"Epoch 87/100\n",
"70/70 [==============================] - 0s 192us/step - loss: 0.6722 - acc: 0.5857 - val_loss: 0.6801 - val_acc: 0.6667\n",
"Epoch 88/100\n",
"70/70 [==============================] - 0s 194us/step - loss: 0.6720 - acc: 0.5571 - val_loss: 0.6798 - val_acc: 0.6667\n",
"Epoch 89/100\n",
"70/70 [==============================] - 0s 196us/step - loss: 0.6723 - acc: 0.5857 - val_loss: 0.6796 - val_acc: 0.6667\n",
"Epoch 90/100\n",
"70/70 [==============================] - 0s 204us/step - loss: 0.6719 - acc: 0.5571 - val_loss: 0.6793 - val_acc: 0.6667\n",
"Epoch 91/100\n",
"70/70 [==============================] - 0s 175us/step - loss: 0.6716 - acc: 0.5571 - val_loss: 0.6791 - val_acc: 0.6667\n",
"Epoch 92/100\n",
"70/70 [==============================] - 0s 208us/step - loss: 0.6716 - acc: 0.5857 - val_loss: 0.6788 - val_acc: 0.6667\n",
"Epoch 93/100\n",
"70/70 [==============================] - 0s 194us/step - loss: 0.6716 - acc: 0.5857 - val_loss: 0.6786 - val_acc: 0.6667\n",
"Epoch 94/100\n",
"70/70 [==============================] - 0s 205us/step - loss: 0.6709 - acc: 0.5714 - val_loss: 0.6784 - val_acc: 0.6667\n",
"Epoch 95/100\n",
"70/70 [==============================] - 0s 196us/step - loss: 0.6714 - acc: 0.5571 - val_loss: 0.6781 - val_acc: 0.6667\n",
"Epoch 96/100\n",
"70/70 [==============================] - 0s 187us/step - loss: 0.6709 - acc: 0.5857 - val_loss: 0.6779 - val_acc: 0.6667\n",
"Epoch 97/100\n",
"70/70 [==============================] - 0s 189us/step - loss: 0.6714 - acc: 0.5571 - val_loss: 0.6776 - val_acc: 0.6667\n",
"Epoch 98/100\n",
"70/70 [==============================] - 0s 189us/step - loss: 0.6697 - acc: 0.5714 - val_loss: 0.6774 - val_acc: 0.6667\n",
"Epoch 99/100\n",
"70/70 [==============================] - 0s 200us/step - loss: 0.6706 - acc: 0.5857 - val_loss: 0.6771 - val_acc: 0.6667\n",
"Epoch 100/100\n",
"70/70 [==============================] - 0s 192us/step - loss: 0.6697 - acc: 0.5857 - val_loss: 0.6769 - val_acc: 0.6667\n"
]
}
],
"source": [
"history = model.fit(x_train, y_train,batch_size=batch_size, epochs=epochs,verbose=1, validation_data=(x_test, y_test))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 模型預測"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[0.92695412 0.25474367 0.79755773]]\n"
]
}
],
"source": [
"predict_x = np.random.rand(1,3)\n",
"print(predict_x)"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.507386, 0.492614]], dtype=float32)"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.predict(predict_x)"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0])"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.predict_classes(predict_x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 模型準確度圖"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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uFoaoH4f5J4e6ZKYIEZMzeKHz2xl2/6GQT3njEkZ3HnVzD73ufvuu9myZQubNm3itdde44orrmDLli2+Lq4PPvgg48aN4/jx48yfP5/rrruOrKysLufYtWsXZWVl/OEPf2DRokU8/vjj3HDDDYN6L8ZERM0O53vujMiWwwQ1YoLFcFFaWtplLMSvfvUrnnzySQD27dvHrl27egSLqVOnMmfOHADmzZvH3r17h6y8xoRV9Tbne25xZMthghoxwSJYDWCopKam+n5+7bXXePnll3nnnXcYPXo0F1xwQcCxEsnJyb6f4+PjrRnKxI7qHZCYCpmFkS6JCSKsOQsRWSAiO0WkXERu62WfRSKyTUS2isgyv+2dIrLJ/VoRznKGU3p6Oo2NgVeorK+vZ+zYsYwePZodO3awatWqIS6dMRFWvc3JV8RZ+nS4C1vNQkTigXuBS4BKYK2IrFDVbX77FAG3A+ep6hERyfU7xXFVnROu8g2VrKwszjvvPGbNmsWoUaMYP36877kFCxZw3333UVxczGmnncY555wTwZIaEwHV2+HUSyNdChOCcDZDlQLlqrobQESWA1cD2/z2+RJwr6oeAVDV6jCWJ2KWLVsWcHtycjLPPfdcwOe8eYns7Gy2bNni2/7d73530MtnTEQ010JzNeRYviIahLPulwfs83tc6W7zdypwqoj8U0RWicgCv+dSRGSdu/2aQBcQkZvcfdbV1NQMbumNMeFVvd35bsntqBDpBHcCUARcAOQDb4jIbFU9CkxW1SoRmQa8IiKbVfUD/4NV9X7gfoCSkhId2qIbY06KdZuNKuGsWVQBBX6P891t/iqBFararqp7gPdxggeqWuV+3w28BswNY1mNMUOtehukjIH0CZEuiQlBOIPFWqBIRKaKSBKwGOjeq+kpnFoFIpKN0yy1W0TGikiy3/bz6JrrMMZEu+rtTq3CZkyOCmELFqraAdwCvABsBx5V1a0icpeILHR3ewGoE5FtwKvA91S1DigG1onIu+72u/17URljopzqiW6zJiqENWehqiuBld223eH3swLfdr/893kbmB3OshljIqjxALTUW74iithImDDzzjo7EL/4xS84duzYIJfImGHApvmIOhYswsyChTEBVLs9oWyMRdSIdNfZmOc/Rfkll1xCbm4ujz76KK2trVx77bX88Ic/pLm5mUWLFlFZWUln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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11b068b70>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(history.history['acc'])\n",
"plt.plot(history.history['val_acc'])\n",
"plt.title('model accuracy')\n",
"plt.ylabel('accuracy')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'test'], loc='upper left')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 模型誤差圖"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11b2c02e8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(history.history['loss'])\n",
"plt.plot(history.history['val_loss'])\n",
"plt.title('model loss')\n",
"plt.ylabel('loss')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'test'], loc='upper left')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment