canvas-recognition/Segment/Untitled.ipynb

369 lines
38 KiB
Text
Raw Normal View History

2021-03-29 23:26:06 -07:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from keras.preprocessing.image import ImageDataGenerator\n",
"from keras.preprocessing import image\n",
"import keras\n",
"from keras.models import Sequential\n",
"from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Activation\n",
"import os\n",
"import pickle"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hi\n"
]
}
],
"source": [
"print('hi')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"def get_result(result):\n",
" if result[0][0] == 1:\n",
" return('a')\n",
" elif result[0][1] == 1:\n",
" return ('b')\n",
" elif result[0][2] == 1:\n",
" return ('c')\n",
" elif result[0][3] == 1:\n",
" return ('d')\n",
" elif result[0][4] == 1:\n",
" return ('e')\n",
" elif result[0][5] == 1:\n",
" return ('f')\n",
" elif result[0][6] == 1:\n",
" return ('g')\n",
" elif result[0][7] == 1:\n",
" return ('h')\n",
" elif result[0][8] == 1:\n",
" return ('i')\n",
" elif result[0][9] == 1:\n",
" return ('j')\n",
" elif result[0][10] == 1:\n",
" return ('k')\n",
" elif result[0][11] == 1:\n",
" return ('l')\n",
" elif result[0][12] == 1:\n",
" return ('m')\n",
" elif result[0][13] == 1:\n",
" return ('n')\n",
" elif result[0][14] == 1:\n",
" return ('o')\n",
" elif result[0][15] == 1:\n",
" return ('p')\n",
" elif result[0][16] == 1:\n",
" return ('q')\n",
" elif result[0][17] == 1:\n",
" return ('r')\n",
" elif result[0][18] == 1:\n",
" return ('s')\n",
" elif result[0][19] == 1:\n",
" return ('t')\n",
" elif result[0][20] == 1:\n",
" return ('u')\n",
" elif result[0][21] == 1:\n",
" return ('v')\n",
" elif result[0][22] == 1:\n",
" return ('w')\n",
" elif result[0][23] == 1:\n",
" return ('x')\n",
" elif result[0][24] == 1:\n",
" return ('y')\n",
" elif result[0][25] == 1:\n",
" return ('z')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"dataset = pd.read_csv(\"A_Z Handwritten Data.csv\").astype('float32')\n",
"dataset.rename(columns={'0':'label'}, inplace=True)\n",
"\n",
"# Splite data the X - Our data , and y - the prdict label\n",
"X = dataset.drop('label',axis = 1)\n",
"y = dataset['label']"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Amount of each labels\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 720x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"print(\"Amount of each labels\")\n",
"\n",
"# Change label to alphabets\n",
"alphabets_mapper = {0:'A',1:'B',2:'C',3:'D',4:'E',5:'F',6:'G',7:'H',8:'I',9:'J',10:'K',11:'L',12:'M',13:'N',14:'O',15:'P',16:'Q',17:'R',18:'S',19:'T',20:'U',21:'V',22:'W',23:'X',24:'Y',25:'Z'} \n",
"dataset_alphabets = dataset.copy()\n",
"dataset['label'] = dataset['label'].map(alphabets_mapper)\n",
"\n",
"label_size = dataset.groupby('label').size()\n",
"label_size.plot.barh(figsize=(10,10))\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"# splite the data\n",
"X_train, X_test, y_train, y_test = train_test_split(X,y)\n",
"\n",
"# scale data\n",
"standard_scaler = MinMaxScaler()\n",
"standard_scaler.fit(X_train)\n",
"\n",
"X_train = standard_scaler.transform(X_train)\n",
"X_test = standard_scaler.transform(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"from keras.utils import np_utils\n",
"\n",
"X_train = X_train.reshape(X_train.shape[0], 28, 28, 1).astype('float32')\n",
"X_test = X_test.reshape(X_test.shape[0], 28, 28, 1).astype('float32')\n",
"\n",
"y_train = np_utils.to_categorical(y_train)\n",
"y_test = np_utils.to_categorical(y_test)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_train[0]"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(28, 28, 1)"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train[0].shape"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"sequential\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"conv2d (Conv2D) (None, 26, 26, 32) 320 \n",
"_________________________________________________________________\n",
"max_pooling2d (MaxPooling2D) (None, 13, 13, 32) 0 \n",
"_________________________________________________________________\n",
"conv2d_1 (Conv2D) (None, 11, 11, 32) 9248 \n",
"_________________________________________________________________\n",
"max_pooling2d_1 (MaxPooling2 (None, 5, 5, 32) 0 \n",
"_________________________________________________________________\n",
"flatten (Flatten) (None, 800) 0 \n",
"_________________________________________________________________\n",
"dense (Dense) (None, 128) 102528 \n",
"_________________________________________________________________\n",
"dense_1 (Dense) (None, 26) 3354 \n",
"=================================================================\n",
"Total params: 115,450\n",
"Trainable params: 115,450\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"model = Sequential()\n",
"model.add(Conv2D(32, (3, 3), input_shape = (28,28,1), activation = 'relu'))\n",
"model.add(MaxPooling2D(pool_size = (2, 2)))\n",
"\n",
"\n",
"model.add(Conv2D(32, (3, 3), activation = 'relu'))\n",
"model.add(MaxPooling2D(pool_size = (2, 2)))\n",
"\n",
"model.add(Flatten())\n",
"model.add(Dense(units = 128, activation = 'relu'))\n",
"model.add(Dense(units = 26, activation = 'softmax'))\n",
"\n",
"\n",
"model.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])\n",
"\n",
"model.summary()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/20\n",
"1092/1092 [==============================] - 130s 119ms/step - loss: 0.0169 - accuracy: 0.9950 - val_loss: 0.0126 - val_accuracy: 0.9976\n",
"Epoch 2/20\n",
"1092/1092 [==============================] - 129s 118ms/step - loss: 0.0130 - accuracy: 0.9957 - val_loss: 0.0136 - val_accuracy: 0.9970\n",
"Epoch 3/20\n",
" 978/1092 [=========================>....] - ETA: 12s - loss: 0.0110 - accuracy: 0.9963"
]
}
],
"source": [
"history = model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=20, batch_size=256)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "in user code:\n\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1478 predict_function *\n return step_function(self, iterator)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1468 step_function **\n outputs = model.distribute_strategy.run(run_step, args=(data,))\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:1259 run\n return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:2730 call_for_each_replica\n return self._call_for_each_replica(fn, args, kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:3417 _call_for_each_replica\n return fn(*args, **kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1461 run_step **\n outputs = model.predict_step(data)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1434 predict_step\n return self(x, training=False)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py:998 __call__\n input_spec.assert_input_compatibility(self.input_spec, inputs, self.name)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/input_spec.py:234 assert_input_compatibility\n raise ValueError('Input ' + str(input_index) + ' of layer ' +\n\n ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found ndim=3. Full shape received: (None, 28, 1)\n",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-20-0a61dec56e59>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmypred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, x, batch_size, verbose, steps, callbacks, max_queue_size, workers, use_multiprocessing)\u001b[0m\n\u001b[1;32m 1627\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mstep\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdata_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msteps\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1628\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_predict_batch_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1629\u001b[0;31m \u001b[0mtmp_batch_outputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0miterator\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1630\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdata_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshould_sync\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1631\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masync_wait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 826\u001b[0m \u001b[0mtracing_count\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexperimental_get_tracing_count\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 827\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mtrace\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTrace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mtm\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 828\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 829\u001b[0m \u001b[0mcompiler\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"xla\"\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_experimental_compile\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m\"nonXla\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 830\u001b[0m \u001b[0mnew_tracing_count\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexperimental_get_tracing_count\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36m_call\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 869\u001b[0m \u001b[0;31m# This is the first call of __call__, so we have to initialize.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 870\u001b[0m \u001b[0minitializers\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 871\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_initialize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0madd_initializers_to\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minitializers\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 872\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 873\u001b[0m \u001b[0;31m# At this point we know that the initialization is complete (or less\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36m_initialize\u001b[0;34m(self, args, kwds, add_initializers_to)\u001b[0m\n\u001b[1;32m 723\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_graph_deleter\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mFunctionDeleter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_lifted_initializer_graph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 724\u001b[0m self._concrete_stateful_fn = (\n\u001b[0;32m--> 725\u001b[0;31m self._stateful_fn._get_concrete_function_internal_garbage_collected( # pylint: disable=protected-access\n\u001b[0m\u001b[1;32m 726\u001b[0m *args, **kwds))\n\u001b[1;32m 727\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m_get_concrete_function_internal_garbage_collected\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 2967\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2968\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_lock\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2969\u001b[0;31m \u001b[0mgraph_function\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_maybe_define_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2970\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mgraph_function\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2971\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m_maybe_define_function\u001b[0;34m(self, args, kwargs)\u001b[0m\n\u001b[1;32m 3359\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3360\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_function_cache\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmissed\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcall_context_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3361\u001b[0;31m \u001b[0mgraph_function\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_create_graph_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3362\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_function_cache\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprimary\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcache_key\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgraph_function\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3363\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m_create_graph_function\u001b[0;34m(self, args, kwargs, override_flat_arg_shapes)\u001b[0m\n\u001b[1;32m 3194\u001b[0m \u001b[0marg_names\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbase_arg_names\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mmissing_arg_names\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3195\u001b[0m graph_function = ConcreteFunction(\n\u001b[0;32m-> 3196\u001b[0;31m func_graph_module.func_graph_from_py_func(\n\u001b[0m\u001b[1;32m 3197\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_name\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3198\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_python_function\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py\u001b[0m in \u001b[0;36mfunc_graph_from_py_func\u001b[0;34m(name, python_func, args, kwargs, signature, func_graph, autograph, autograph_options, add_control_dependencies, arg_names, op_return_value, collections, capture_by_value, override_flat_arg_shapes)\u001b[0m\n\u001b[1;32m 988\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moriginal_func\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_decorator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munwrap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpython_func\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 989\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 990\u001b[0;31m \u001b[0mfunc_outputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpython_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mfunc_args\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfunc_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 991\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 992\u001b[0m \u001b[0;31m# invariant: `func_outputs` contains only Tensors, CompositeTensors,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36mwrapped_fn\u001b[0;34m(*args, **kwds)\u001b[0m\n\u001b[1;32m 632\u001b[0m \u001b[0mxla_context\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mExit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 633\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 634\u001b[0;31m \u001b[0mout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mweak_wrapped_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__wrapped__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 635\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mout\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 636\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 975\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# pylint:disable=broad-except\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 976\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"ag_error_metadata\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 977\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mag_error_metadata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_exception\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 978\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 979\u001b[0m \u001b[0;32mraise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mValueError\u001b[0m: in user code:\n\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1478 predict_function *\n return step_function(self, iterator)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1468 step_function **\n outputs = model.distribute_strategy.run(run_step, args=(data,))\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:1259 run\n return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:2730 call_for_each_replica\n return self._call_for_each_replica(fn, args, kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:3417 _call_for_each_replica\n return fn(*args, **kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1461 run_step **\n outputs = model.predict_step(data)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1434 predict_step\n return self(x, training=False)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py:998 __call__\n input_spec.assert_input_compatibility(self.input_spec, inputs, self.name)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/input_spec.py:234 assert_input_compatibility\n raise ValueError('Input ' + str(input_index) + ' of layer ' +\n\n ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found ndim=3. Full shape received: (None, 28, 1)\n"
]
}
],
"source": [
"mypred = model.predict(X_train[0])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"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.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}