{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\rstancut\\AppData\\Local\\Continuum\\anaconda2\\envs\\keras\\lib\\site-packages\\h5py\\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n", " from ._conv import register_converters as _register_converters\n", "Using TensorFlow backend.\n" ] } ], "source": [ "import pandas as pd\n", "import keras\n", "from keras.models import Sequential\n", "from keras.layers import *\n", "import tensorflow as tf" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "training_data_df = pd.read_csv(\"Exercise Files/07/sales_data_training_scaled.csv\")\n", "\n", "X = training_data_df.drop('total_earnings', axis=1).values\n", "Y = training_data_df[['total_earnings']].values\n", "\n", "# Define the model\n", "model = Sequential()\n", "model.add(Dense(50, input_dim=9, activation='relu', name='layer_1'))\n", "model.add(Dense(100, activation='relu', name='layer_2'))\n", "model.add(Dense(50, activation='relu', name='layer_3'))\n", "model.add(Dense(1, activation='linear', name='output_layer'))\n", "model.compile(loss='mean_squared_error', optimizer='adam')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/50\n", " - 0s - loss: 0.0227\n", "Epoch 2/50\n", " - 0s - loss: 0.0052\n", "Epoch 3/50\n", " - 0s - loss: 0.0017\n", "Epoch 4/50\n", " - 0s - loss: 5.5748e-04\n", "Epoch 5/50\n", " - 0s - loss: 2.5953e-04\n", "Epoch 6/50\n", " - 0s - loss: 1.7975e-04\n", "Epoch 7/50\n", " - 0s - loss: 1.4039e-04\n", "Epoch 8/50\n", " - 0s - loss: 1.0314e-04\n", "Epoch 9/50\n", " - 0s - loss: 9.1074e-05\n", "Epoch 10/50\n", " - 0s - loss: 1.0132e-04\n", "Epoch 11/50\n", " - 0s - loss: 8.4940e-05\n", "Epoch 12/50\n", " - 0s - loss: 6.2468e-05\n", "Epoch 13/50\n", " - 0s - loss: 5.3496e-05\n", "Epoch 14/50\n", " - 0s - loss: 5.0403e-05\n", "Epoch 15/50\n", " - 0s - loss: 5.9816e-05\n", "Epoch 16/50\n", " - 0s - loss: 4.4133e-05\n", "Epoch 17/50\n", " - 0s - loss: 3.5091e-05\n", "Epoch 18/50\n", " - 0s - loss: 3.6853e-05\n", "Epoch 19/50\n", " - 0s - loss: 3.4347e-05\n", "Epoch 20/50\n", " - 0s - loss: 3.5045e-05\n", "Epoch 21/50\n", " - 0s - loss: 3.4173e-05\n", "Epoch 22/50\n", " - 0s - loss: 3.8343e-05\n", "Epoch 23/50\n", " - 0s - loss: 3.8071e-05\n", "Epoch 24/50\n", " - 0s - loss: 3.8656e-05\n", "Epoch 25/50\n", " - 0s - loss: 3.2387e-05\n", "Epoch 26/50\n", " - 0s - loss: 2.7059e-05\n", "Epoch 27/50\n", " - 0s - loss: 2.4506e-05\n", "Epoch 28/50\n", " - 0s - loss: 2.8591e-05\n", "Epoch 29/50\n", " - 0s - loss: 2.9481e-05\n", "Epoch 30/50\n", " - 0s - loss: 2.7920e-05\n", "Epoch 31/50\n", " - 0s - loss: 2.7750e-05\n", "Epoch 32/50\n", " - 0s - loss: 2.5467e-05\n", "Epoch 33/50\n", " - 0s - loss: 2.3225e-05\n", "Epoch 34/50\n", " - 0s - loss: 4.4590e-05\n", "Epoch 35/50\n", " - 0s - loss: 3.8818e-05\n", "Epoch 36/50\n", " - 0s - loss: 4.8698e-05\n", "Epoch 37/50\n", " - 0s - loss: 3.6104e-05\n", "Epoch 38/50\n", " - 0s - loss: 2.4204e-05\n", "Epoch 39/50\n", " - 0s - loss: 2.9451e-05\n", "Epoch 40/50\n", " - 0s - loss: 3.7958e-05\n", "Epoch 41/50\n", " - 0s - loss: 3.4461e-05\n", "Epoch 42/50\n", " - 0s - loss: 2.6710e-05\n", "Epoch 43/50\n", " - 0s - loss: 2.0069e-05\n", "Epoch 44/50\n", " - 0s - loss: 2.2829e-05\n", "Epoch 45/50\n", " - 0s - loss: 2.7821e-05\n", "Epoch 46/50\n", " - 0s - loss: 3.6467e-05\n", "Epoch 47/50\n", " - 0s - loss: 3.3873e-05\n", "Epoch 48/50\n", " - 0s - loss: 2.2890e-05\n", "Epoch 49/50\n", " - 0s - loss: 2.1494e-05\n", "Epoch 50/50\n", " - 0s - loss: 2.1028e-05\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create a TensorBoard logger\n", "logger = keras.callbacks.TensorBoard(\n", " log_dir='Exercise Files/07/logs',\n", "# histogram_freq=5,\n", " write_graph=True\n", ")\n", "\n", "# Train the model\n", "model.fit(\n", " X,\n", " Y,\n", " epochs=50,\n", " shuffle=True,\n", " verbose=2,\n", " callbacks=[logger]\n", ")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The mean squared error (MSE) for the test data set is: 7.801730826031416e-05\n" ] } ], "source": [ "# Load the separate test data set\n", "test_data_df = pd.read_csv(\"Exercise Files/07/sales_data_test_scaled.csv\")\n", "\n", "X_test = test_data_df.drop('total_earnings', axis=1).values\n", "Y_test = test_data_df[['total_earnings']].values\n", "\n", "test_error_rate = model.evaluate(X_test, Y_test, verbose=0)\n", "print(\"The mean squared error (MSE) for the test data set is: {}\".format(test_error_rate))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:No assets to save.\n", "INFO:tensorflow:No assets to write.\n", "INFO:tensorflow:SavedModel written to: b'Exercise Files/07/exported_model\\\\saved_model.pb'\n" ] }, { "data": { "text/plain": [ "b'Exercise Files/07/exported_model\\\\saved_model.pb'" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_builder = tf.saved_model.builder.SavedModelBuilder(\"Exercise Files/07/exported_model\")\n", "\n", "inputs = {\n", " 'input': tf.saved_model.utils.build_tensor_info(model.input)\n", "}\n", "outputs = {\n", " 'earnings': tf.saved_model.utils.build_tensor_info(model.output)\n", "}\n", "\n", "signature_def = tf.saved_model.signature_def_utils.build_signature_def(\n", " inputs=inputs,\n", " outputs=outputs,\n", " method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME\n", ")\n", "\n", "model_builder.add_meta_graph_and_variables(\n", " K.get_session(),\n", " tags=[tf.saved_model.tag_constants.SERVING],\n", " signature_def_map={\n", " tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature_def\n", " }\n", ")\n", "\n", "model_builder.save()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:keras]", "language": "python", "name": "conda-env-keras-py" }, "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.5.4" } }, "nbformat": 4, "nbformat_minor": 2 }