Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
199 changes: 199 additions & 0 deletions .ipynb_checkpoints/keras-checkpoint.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,199 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Keras Tutorial"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Keras is a popular deep learning framework and it's easy to get started."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import keras\n",
"from keras.datasets import mnist\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense,Activation, Dropout, Flatten, Conv2D, MaxPooling2D\n",
"\n",
"BATCH_SIZE = 128\n",
"NUM_CLASSES = 10\n",
"NUM_EPOCHS = 10\n",
"nb_filters = 32\n",
"pool_size = (2,2)\n",
"kernel_size = (3,3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, we read the mnist data and preprocess them."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# download and load the data (split them between train and test sets)\n",
"(x_train, y_train), (x_test, y_test) = mnist.load_data()\n",
"\n",
"# expand the channel dimension\n",
"x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)\n",
"x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)\n",
"input_shape = (28, 28, 1)\n",
"\n",
"# make the value of pixels from [0, 255] to [0, 1] for further process\n",
"x_train = x_train.astype('float32') / 255.\n",
"x_test = x_test.astype('float32') / 255.\n",
"\n",
"# convert class vectors to binary class matrics\n",
"y_train = keras.utils.to_categorical(y_train, NUM_CLASSES)\n",
"y_test = keras.utils.to_categorical(y_test, NUM_CLASSES)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then, we define the model, object function and optimizer that we use to classify."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(60000, 28, 28, 1) (60000, 10) (10000, 28, 28, 1) (10000, 10)\n",
"WARNING:tensorflow:From /home/luna/.local/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:4070: The name tf.nn.max_pool is deprecated. Please use tf.nn.max_pool2d instead.\n",
"\n"
]
}
],
"source": [
"print(x_train.shape,y_train.shape,x_test.shape,y_test.shape)\n",
"\n",
"# define the model\n",
"model = Sequential()\n",
"model.add(Conv2D(nb_filters,kernel_size,input_shape=input_shape,padding='valid')) \n",
"model.add(Activation('relu'))\n",
"model.add(Conv2D(nb_filters,kernel_size))\n",
"model.add(Activation('relu'))\n",
"model.add(MaxPooling2D(pool_size=pool_size))\n",
"model.add(Dropout(0.25))\n",
"model.add(Flatten())\n",
"model.add(Dense(128))\n",
"model.add(Activation('relu'))\n",
"model.add(Dropout(0.5))\n",
"model.add(Dense(NUM_CLASSES))\n",
"model.add(Activation('softmax'))\n",
"\n",
"# define the object function, optimizer and metrics\n",
"model.compile(loss = 'categorical_crossentropy',optimizer='adadelta',metrics=['accuracy'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, we can start to train and evaluate!"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /home/luna/.local/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:422: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
"\n",
"Train on 60000 samples, validate on 10000 samples\n",
"Epoch 1/10\n",
"60000/60000 [==============================] - 87s 1ms/step - loss: 0.2938 - accuracy: 0.9104 - val_loss: 0.0648 - val_accuracy: 0.9800\n",
"Epoch 2/10\n",
"60000/60000 [==============================] - 82s 1ms/step - loss: 0.1007 - accuracy: 0.9706 - val_loss: 0.0467 - val_accuracy: 0.9842\n",
"Epoch 3/10\n",
"60000/60000 [==============================] - 80s 1ms/step - loss: 0.0759 - accuracy: 0.9767 - val_loss: 0.0386 - val_accuracy: 0.9872\n",
"Epoch 4/10\n",
"60000/60000 [==============================] - 88s 1ms/step - loss: 0.0639 - accuracy: 0.9814 - val_loss: 0.0373 - val_accuracy: 0.9880\n",
"Epoch 5/10\n",
"60000/60000 [==============================] - 85s 1ms/step - loss: 0.0557 - accuracy: 0.9837 - val_loss: 0.0313 - val_accuracy: 0.9891\n",
"Epoch 6/10\n",
"60000/60000 [==============================] - 85s 1ms/step - loss: 0.0502 - accuracy: 0.9847 - val_loss: 0.0330 - val_accuracy: 0.9896\n",
"Epoch 7/10\n",
"60000/60000 [==============================] - 84s 1ms/step - loss: 0.0481 - accuracy: 0.9857 - val_loss: 0.0303 - val_accuracy: 0.9900\n",
"Epoch 8/10\n",
"60000/60000 [==============================] - 82s 1ms/step - loss: 0.0434 - accuracy: 0.9870 - val_loss: 0.0304 - val_accuracy: 0.9906\n",
"Epoch 9/10\n",
"60000/60000 [==============================] - 82s 1ms/step - loss: 0.0391 - accuracy: 0.9881 - val_loss: 0.0271 - val_accuracy: 0.9909\n",
"Epoch 10/10\n",
"60000/60000 [==============================] - 82s 1ms/step - loss: 0.0366 - accuracy: 0.9888 - val_loss: 0.0311 - val_accuracy: 0.9901\n",
"60000/60000 [==============================] - 17s 288us/step\n",
"Training loss: 0.0156, Training accuracy: 99.50%\n",
"10000/10000 [==============================] - 3s 285us/step\n",
"Testing loss: 0.0311, Testing accuracy: 99.01%\n"
]
}
],
"source": [
"# train\n",
"model.fit(x_train,y_train,batch_size=BATCH_SIZE,epochs=NUM_EPOCHS,validation_data=(x_test,y_test))\n",
"\n",
"# evaluate\n",
"score_train,acc_train = model.evaluate(x_train,y_train,batch_size=BATCH_SIZE)\n",
"print('Training loss: %.4f, Training accuracy: %.2f%%' % (score_train,acc_train*100))\n",
"score_test,acc_test = model.evaluate(x_test,y_test,batch_size=BATCH_SIZE)\n",
"print('Testing loss: %.4f, Testing accuracy: %.2f%%' % (score_test,acc_test*100))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Q6:\n",
"Please print the training and testing accuracy."
]
}
],
"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.9"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
435 changes: 435 additions & 0 deletions .ipynb_checkpoints/numpy_matplotlib_sklearn-checkpoint.ipynb

Large diffs are not rendered by default.

Loading