{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load in \n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n\nimport os\nprint(os.listdir(\"../input\"))\n\n# Any results you write to the current directory are saved as output.","execution_count":1,"outputs":[{"output_type":"stream","text":"['let-s-make-tfrecord-simple-version', 'iwildcam-2019-fgvc6']\n","name":"stdout"}]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"%%time\n\nfrom __future__ import absolute_import, division, print_function\n\nimport tensorflow as tf\nimport IPython.display as display\n\ntf.enable_eager_execution()\nprint(tf.VERSION)\n\nAUTOTUNE = tf.data.experimental.AUTOTUNE","execution_count":2,"outputs":[{"output_type":"stream","text":"1.13.1\nCPU times: user 780 ms, sys: 104 ms, total: 884 ms\nWall time: 922 ms\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"%%time\n\nimg_size = 10\n\ndf = pd.read_csv('../input/iwildcam-2019-fgvc6/train.csv')\n\nf = df['file_name']\nid = df['category_id']\n\nall_image_paths = ['../input/iwildcam-2019-fgvc6/train_images/' + fname for fname in f]\nall_image_labels = [i for i in id]\n\npaths_labels = dict(zip(all_image_paths[0:img_size], all_image_labels[0:img_size]))","execution_count":3,"outputs":[{"output_type":"stream","text":"CPU times: user 644 ms, sys: 88 ms, total: 732 ms\nWall time: 760 ms\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"%%time\n\nmobile_net = tf.keras.applications.DenseNet121(weights='imagenet', input_shape=(192, 192, 3), include_top=False)\nmobile_net.trainable=False","execution_count":4,"outputs":[{"output_type":"stream","text":"WARNING:tensorflow:From /opt/conda/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py:642: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\nInstructions for updating:\nColocations handled automatically by placer.\nDownloading data from https://github.com/keras-team/keras-applications/releases/download/densenet/densenet121_weights_tf_dim_ordering_tf_kernels_notop.h5\n29089792/29084464 [==============================] - 0s 0us/step\nCPU times: user 8.1 s, sys: 988 ms, total: 9.09 s\nWall time: 10.6 s\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"%%time\n\nds = tf.data.TFRecordDataset('../input/let-s-make-tfrecord-simple-version/images.tfrec')\n\ndef parse(x):\n  result = tf.io.parse_tensor(x, out_type=tf.string)\n  result = tf.image.decode_jpeg(result, channels=3)\n  result = tf.dtypes.cast(result, tf.float32)\n#  result = 2 * (result/255.) - 1\n  result = result/255.\n#  result = tf.reshape(result, [28, 28, 3])\n  return result\n\nds = ds.map(parse, num_parallel_calls=AUTOTUNE)\n#ds = ds.map(change_range)\n","execution_count":5,"outputs":[{"output_type":"stream","text":"CPU times: user 20 ms, sys: 0 ns, total: 20 ms\nWall time: 84.8 ms\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"lables = tf.data.Dataset.from_tensor_slices(tf.cast(all_image_labels, tf.int64))\n\nds = tf.data.Dataset.zip((ds, lables))","execution_count":6,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ds = ds.repeat()\nds = ds.batch(32)","execution_count":7,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = tf.keras.Sequential([\n  mobile_net,\n  tf.keras.layers.GlobalAveragePooling2D(),\n  tf.keras.layers.Dense(1024, activation='relu'),\n  tf.keras.layers.Dense(23, activation='softmax')])","execution_count":8,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.compile(optimizer=tf.keras.optimizers.Adam(0.001), \n              loss=tf.keras.losses.sparse_categorical_crossentropy,\n              metrics=[\"accuracy\"])","execution_count":9,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#%%time\n\n#model.fit(ds, epochs=10, steps_per_epoch=5000)","execution_count":10,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.fit(ds, epochs=5, steps_per_epoch=60)","execution_count":11,"outputs":[{"output_type":"stream","text":"Epoch 1/5\n60/60 [==============================] - 13s 217ms/step - loss: 1.2148 - acc: 0.6932\nEpoch 2/5\n60/60 [==============================] - 8s 128ms/step - loss: 0.9123 - acc: 0.7255\nEpoch 3/5\n60/60 [==============================] - 7s 120ms/step - loss: 0.8140 - acc: 0.7531\nEpoch 4/5\n60/60 [==============================] - 7s 118ms/step - loss: 0.8133 - acc: 0.7516\nEpoch 5/5\n60/60 [==============================] - 7s 118ms/step - loss: 0.7632 - acc: 0.7589\n","name":"stdout"},{"output_type":"execute_result","execution_count":11,"data":{"text/plain":"<tensorflow.python.keras.callbacks.History at 0x7f2916292eb8>"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"!ls -al\n","execution_count":12,"outputs":[{"output_type":"stream","text":"total 16\r\ndrwxr-xr-x 3 root root 4096 May 11 02:37 .\r\ndrwxr-xr-x 6 root root 4096 May 11 02:37 ..\r\ndrwxr-xr-x 2 root root 4096 May 11 02:37 .ipynb_checkpoints\r\n-rw-r--r-- 1 root root  199 May 11 02:37 __notebook_source__.ipynb\r\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"checkpoint_path = \"cp-{epoch:04d}.ckpt\"\ncheckpoint_dir = os.path.dirname(checkpoint_path)\n","execution_count":13,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# include the epoch in the file name. (uses `str.format`)\n\ncp_callback = tf.keras.callbacks.ModelCheckpoint(\n    checkpoint_path, verbose=1, save_weights_only=True,\n    period=1)\n\nmodel.save_weights(checkpoint_path.format(epoch=0))\nmodel.fit(ds, epochs = 5, steps_per_epoch = 60, callbacks = [cp_callback],\n          verbose=1)","execution_count":14,"outputs":[{"output_type":"stream","text":"WARNING:tensorflow:This model was compiled with a Keras optimizer (<tensorflow.python.keras.optimizers.Adam object at 0x7f291b0e0198>) but is being saved in TensorFlow format with `save_weights`. The model's weights will be saved, but unlike with TensorFlow optimizers in the TensorFlow format the optimizer's state will not be saved.\n\nConsider using a TensorFlow optimizer from `tf.train`.\nWARNING:tensorflow:From /opt/conda/lib/python3.6/site-packages/tensorflow/python/keras/engine/network.py:1436: update_checkpoint_state (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\nInstructions for updating:\nUse tf.train.CheckpointManager to manage checkpoints rather than manually editing the Checkpoint proto.\nEpoch 1/5\n59/60 [============================>.] - ETA: 0s - loss: 0.6178 - acc: 0.8014\nEpoch 00001: saving model to cp-0001.ckpt\nWARNING:tensorflow:This model was compiled with a Keras optimizer (<tensorflow.python.keras.optimizers.Adam object at 0x7f291b0e0198>) but is being saved in TensorFlow format with `save_weights`. The model's weights will be saved, but unlike with TensorFlow optimizers in the TensorFlow format the optimizer's state will not be saved.\n\nConsider using a TensorFlow optimizer from `tf.train`.\n60/60 [==============================] - 8s 140ms/step - loss: 0.6231 - acc: 0.8005\nEpoch 2/5\n59/60 [============================>.] - ETA: 0s - loss: 0.6599 - acc: 0.7887\nEpoch 00002: saving model to cp-0002.ckpt\nWARNING:tensorflow:This model was compiled with a Keras optimizer (<tensorflow.python.keras.optimizers.Adam object at 0x7f291b0e0198>) but is being saved in TensorFlow format with `save_weights`. The model's weights will be saved, but unlike with TensorFlow optimizers in the TensorFlow format the optimizer's state will not be saved.\n\nConsider using a TensorFlow optimizer from `tf.train`.\n60/60 [==============================] - 8s 130ms/step - loss: 0.6594 - acc: 0.7891\nEpoch 3/5\n59/60 [============================>.] - ETA: 0s - loss: 0.6130 - acc: 0.8072\nEpoch 00003: saving model to cp-0003.ckpt\nWARNING:tensorflow:This model was compiled with a Keras optimizer (<tensorflow.python.keras.optimizers.Adam object at 0x7f291b0e0198>) but is being saved in TensorFlow format with `save_weights`. The model's weights will be saved, but unlike with TensorFlow optimizers in the TensorFlow format the optimizer's state will not be saved.\n\nConsider using a TensorFlow optimizer from `tf.train`.\n60/60 [==============================] - 8s 126ms/step - loss: 0.6123 - acc: 0.8068\nEpoch 4/5\n59/60 [============================>.] - ETA: 0s - loss: 0.6550 - acc: 0.7971\nEpoch 00004: saving model to cp-0004.ckpt\nWARNING:tensorflow:This model was compiled with a Keras optimizer (<tensorflow.python.keras.optimizers.Adam object at 0x7f291b0e0198>) but is being saved in TensorFlow format with `save_weights`. The model's weights will be saved, but unlike with TensorFlow optimizers in the TensorFlow format the optimizer's state will not be saved.\n\nConsider using a TensorFlow optimizer from `tf.train`.\n60/60 [==============================] - 8s 132ms/step - loss: 0.6505 - acc: 0.7995\nEpoch 5/5\n59/60 [============================>.] - ETA: 0s - loss: 0.6022 - acc: 0.8136\nEpoch 00005: saving model to cp-0005.ckpt\nWARNING:tensorflow:This model was compiled with a Keras optimizer (<tensorflow.python.keras.optimizers.Adam object at 0x7f291b0e0198>) but is being saved in TensorFlow format with `save_weights`. The model's weights will be saved, but unlike with TensorFlow optimizers in the TensorFlow format the optimizer's state will not be saved.\n\nConsider using a TensorFlow optimizer from `tf.train`.\n60/60 [==============================] - 8s 126ms/step - loss: 0.6012 - acc: 0.8141\n","name":"stdout"},{"output_type":"execute_result","execution_count":14,"data":{"text/plain":"<tensorflow.python.keras.callbacks.History at 0x7f2915a76550>"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"!ls -al","execution_count":15,"outputs":[{"output_type":"stream","text":"total 195116\r\ndrwxr-xr-x 3 root root     4096 May 11 02:47 .\r\ndrwxr-xr-x 6 root root     4096 May 11 02:37 ..\r\ndrwxr-xr-x 2 root root     4096 May 11 02:37 .ipynb_checkpoints\r\n-rw-r--r-- 1 root root      199 May 11 02:37 __notebook_source__.ipynb\r\n-rw-r--r-- 1 root root       81 May 11 02:47 checkpoint\r\n-rw-r--r-- 1 root root 33186304 May 11 02:47 cp-0000.ckpt.data-00000-of-00001\r\n-rw-r--r-- 1 root root    62538 May 11 02:47 cp-0000.ckpt.index\r\n-rw-r--r-- 1 root root 33186304 May 11 02:47 cp-0001.ckpt.data-00000-of-00001\r\n-rw-r--r-- 1 root root    62538 May 11 02:47 cp-0001.ckpt.index\r\n-rw-r--r-- 1 root root 33186304 May 11 02:47 cp-0002.ckpt.data-00000-of-00001\r\n-rw-r--r-- 1 root root    62538 May 11 02:47 cp-0002.ckpt.index\r\n-rw-r--r-- 1 root root 33186304 May 11 02:47 cp-0003.ckpt.data-00000-of-00001\r\n-rw-r--r-- 1 root root    62538 May 11 02:47 cp-0003.ckpt.index\r\n-rw-r--r-- 1 root root 33186304 May 11 02:47 cp-0004.ckpt.data-00000-of-00001\r\n-rw-r--r-- 1 root root    62538 May 11 02:47 cp-0004.ckpt.index\r\n-rw-r--r-- 1 root root 33186304 May 11 02:47 cp-0005.ckpt.data-00000-of-00001\r\n-rw-r--r-- 1 root root    62538 May 11 02:47 cp-0005.ckpt.index\r\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"latest = tf.train.latest_checkpoint(checkpoint_dir)\nlatest","execution_count":20,"outputs":[{"output_type":"execute_result","execution_count":20,"data":{"text/plain":"'cp-0005.ckpt'"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.load_weights(latest)","execution_count":21,"outputs":[{"output_type":"execute_result","execution_count":21,"data":{"text/plain":"<tensorflow.python.training.checkpointable.util.CheckpointLoadStatus at 0x7f2d12f79e80>"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.fit(ds, epochs = 5, steps_per_epoch = 60, callbacks = [cp_callback],\n          verbose=1)","execution_count":null,"outputs":[{"output_type":"stream","text":"Epoch 1/5\n59/60 [============================>.] - ETA: 0s - loss: 0.4078 - acc: 0.8665\nEpoch 00001: saving model to cp-0001.ckpt\nWARNING:tensorflow:This model was compiled with a Keras optimizer (<tensorflow.python.keras.optimizers.Adam object at 0x7f291b0e0198>) but is being saved in TensorFlow format with `save_weights`. The model's weights will be saved, but unlike with TensorFlow optimizers in the TensorFlow format the optimizer's state will not be saved.\n\nConsider using a TensorFlow optimizer from `tf.train`.\n60/60 [==============================] - 8s 131ms/step - loss: 0.4110 - acc: 0.8661\nEpoch 2/5\n59/60 [============================>.] - ETA: 0s - loss: 0.4735 - acc: 0.8432\nEpoch 00002: saving model to cp-0002.ckpt\nWARNING:tensorflow:This model was compiled with a Keras optimizer (<tensorflow.python.keras.optimizers.Adam object at 0x7f291b0e0198>) but is being saved in TensorFlow format with `save_weights`. The model's weights will be saved, but unlike with TensorFlow optimizers in the TensorFlow format the optimizer's state will not be saved.\n\nConsider using a TensorFlow optimizer from `tf.train`.\n60/60 [==============================] - 8s 126ms/step - loss: 0.4721 - acc: 0.8438\nEpoch 3/5\n59/60 [============================>.] - ETA: 0s - loss: 0.4344 - acc: 0.8660\nEpoch 00003: saving model to cp-0003.ckpt\nWARNING:tensorflow:This model was compiled with a Keras optimizer (<tensorflow.python.keras.optimizers.Adam object at 0x7f291b0e0198>) but is being saved in TensorFlow format with `save_weights`. The model's weights will be saved, but unlike with TensorFlow optimizers in the TensorFlow format the optimizer's state will not be saved.\n\nConsider using a TensorFlow optimizer from `tf.train`.\n60/60 [==============================] - 8s 128ms/step - loss: 0.4331 - acc: 0.8667\nEpoch 4/5\n17/60 [=======>......................] - ETA: 5s - loss: 0.4716 - acc: 0.8548","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"!ls -al","execution_count":19,"outputs":[{"output_type":"stream","text":"total 195116\r\ndrwxr-xr-x 3 root root     4096 May 11 02:49 .\r\ndrwxr-xr-x 6 root root     4096 May 11 02:37 ..\r\ndrwxr-xr-x 2 root root     4096 May 11 02:37 .ipynb_checkpoints\r\n-rw-r--r-- 1 root root      199 May 11 02:37 __notebook_source__.ipynb\r\n-rw-r--r-- 1 root root       81 May 11 02:49 checkpoint\r\n-rw-r--r-- 1 root root 33186304 May 11 02:47 cp-0000.ckpt.data-00000-of-00001\r\n-rw-r--r-- 1 root root    62538 May 11 02:47 cp-0000.ckpt.index\r\n-rw-r--r-- 1 root root 33186304 May 11 02:49 cp-0001.ckpt.data-00000-of-00001\r\n-rw-r--r-- 1 root root    62538 May 11 02:49 cp-0001.ckpt.index\r\n-rw-r--r-- 1 root root 33186304 May 11 02:49 cp-0002.ckpt.data-00000-of-00001\r\n-rw-r--r-- 1 root root    62538 May 11 02:49 cp-0002.ckpt.index\r\n-rw-r--r-- 1 root root 33186304 May 11 02:49 cp-0003.ckpt.data-00000-of-00001\r\n-rw-r--r-- 1 root root    62538 May 11 02:49 cp-0003.ckpt.index\r\n-rw-r--r-- 1 root root 33186304 May 11 02:49 cp-0004.ckpt.data-00000-of-00001\r\n-rw-r--r-- 1 root root    62538 May 11 02:49 cp-0004.ckpt.index\r\n-rw-r--r-- 1 root root 33186304 May 11 02:49 cp-0005.ckpt.data-00000-of-00001\r\n-rw-r--r-- 1 root root    62538 May 11 02:49 cp-0005.ckpt.index\r\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}