{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.11.11","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"gpu","dataSources":[{"sourceId":21154,"databundleVersionId":1243559,"sourceType":"competition"}],"dockerImageVersionId":31042,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"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\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 read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"25cc3067-5c5f-420f-84e7-daf691a2289e","_cell_guid":"60bbf061-f524-4172-86e0-831574411567","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:25.749030Z","iopub.execute_input":"2025-05-30T14:13:25.749272Z","iopub.status.idle":"2025-05-30T14:13:26.259353Z","shell.execute_reply.started":"2025-05-30T14:13:25.749254Z","shell.execute_reply":"2025-05-30T14:13:26.256922Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import tensorflow as tf","metadata":{"_uuid":"6d734fdc-c681-46a0-9486-e4c70c99b462","_cell_guid":"39d67b7a-781a-4230-a5d3-bbb2eee160c8","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:26.259925Z","iopub.execute_input":"2025-05-30T14:13:26.260284Z","iopub.status.idle":"2025-05-30T14:13:40.661573Z","shell.execute_reply.started":"2025-05-30T14:13:26.260263Z","shell.execute_reply":"2025-05-30T14:13:40.660760Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"file_path = '/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192'","metadata":{"_uuid":"b4ac335e-52d5-4672-875a-8def1d88e713","_cell_guid":"9b71f9d0-1f8a-4aa3-a99e-6cd5cc6cc660","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:40.663664Z","iopub.execute_input":"2025-05-30T14:13:40.664514Z","iopub.status.idle":"2025-05-30T14:13:40.667881Z","shell.execute_reply.started":"2025-05-30T14:13:40.664489Z","shell.execute_reply":"2025-05-30T14:13:40.667091Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_path = os.path.join(file_path,'train/*.tfrec')\nval_path = os.path.join(file_path,'val/*.tfrec')\ntest_path = os.path.join(file_path,'test/*.tfrec')","metadata":{"_uuid":"d9537976-1ebd-4608-8d2d-6a80a02ec37f","_cell_guid":"00e3ab0f-ad50-4a01-8826-680456fd1e34","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:40.668537Z","iopub.execute_input":"2025-05-30T14:13:40.668781Z","iopub.status.idle":"2025-05-30T14:13:40.706958Z","shell.execute_reply.started":"2025-05-30T14:13:40.668752Z","shell.execute_reply":"2025-05-30T14:13:40.706283Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\ntrain_files = tf.io.gfile.glob(train_path)\nval_files = tf.io.gfile.glob(val_path)\ntest_files = tf.io.gfile.glob(test_path)","metadata":{"_uuid":"0365330d-95ad-4725-b431-488d9850d0fd","_cell_guid":"ba085842-2844-48f9-ba3d-378e5ff68b3b","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:40.707797Z","iopub.execute_input":"2025-05-30T14:13:40.708135Z","iopub.status.idle":"2025-05-30T14:13:40.740630Z","shell.execute_reply.started":"2025-05-30T14:13:40.708108Z","shell.execute_reply":"2025-05-30T14:13:40.739863Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"CLASSES = ['pink primrose',    'hard-leaved pocket orchid', 'canterbury bells', 'sweet pea',     'wild geranium',     'tiger lily',           'moon orchid',              'bird of paradise', 'monkshood',        'globe thistle',         # 00 - 09\n           'snapdragon',       \"colt's foot\",               'king protea',      'spear thistle', 'yellow iris',       'globe-flower',         'purple coneflower',        'peruvian lily',    'balloon flower',   'giant white arum lily', # 10 - 19\n           'fire lily',        'pincushion flower',         'fritillary',       'red ginger',    'grape hyacinth',    'corn poppy',           'prince of wales feathers', 'stemless gentian', 'artichoke',        'sweet william',         # 20 - 29\n           'carnation',        'garden phlox',              'love in the mist', 'cosmos',        'alpine sea holly',  'ruby-lipped cattleya', 'cape flower',              'great masterwort', 'siam tulip',       'lenten rose',           # 30 - 39\n           'barberton daisy',  'daffodil',                  'sword lily',       'poinsettia',    'bolero deep blue',  'wallflower',           'marigold',                 'buttercup',        'daisy',            'common dandelion',      # 40 - 49\n           'petunia',          'wild pansy',                'primula',          'sunflower',     'lilac hibiscus',    'bishop of llandaff',   'gaura',                    'geranium',         'orange dahlia',    'pink-yellow dahlia',    # 50 - 59\n           'cautleya spicata', 'japanese anemone',          'black-eyed susan', 'silverbush',    'californian poppy', 'osteospermum',         'spring crocus',            'iris',             'windflower',       'tree poppy',            # 60 - 69\n           'gazania',          'azalea',                    'water lily',       'rose',          'thorn apple',       'morning glory',        'passion flower',           'lotus',            'toad lily',        'anthurium',             # 70 - 79\n           'frangipani',       'clematis',                  'hibiscus',         'columbine',     'desert-rose',       'tree mallow',          'magnolia',                 'cyclamen ',        'watercress',       'canna lily',            # 80 - 89\n           'hippeastrum ',     'bee balm',                  'pink quill',       'foxglove',      'bougainvillea',     'camellia',             'mallow',                   'mexican petunia',  'bromelia',         'blanket flower',        # 90 - 99\n           'trumpet creeper',  'blackberry lily',           'common tulip',     'wild rose']","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-30T14:13:40.741508Z","iopub.execute_input":"2025-05-30T14:13:40.741790Z","iopub.status.idle":"2025-05-30T14:13:40.748103Z","shell.execute_reply.started":"2025-05-30T14:13:40.741765Z","shell.execute_reply":"2025-05-30T14:13:40.747361Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_files","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-30T14:13:40.748798Z","iopub.execute_input":"2025-05-30T14:13:40.749043Z","iopub.status.idle":"2025-05-30T14:13:40.767549Z","shell.execute_reply.started":"2025-05-30T14:13:40.749026Z","shell.execute_reply":"2025-05-30T14:13:40.766957Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"len(train_files)","metadata":{"_uuid":"39c2cf44-a376-463f-8eef-31b48aeff8a5","_cell_guid":"19d7414d-bcfc-464d-a2e7-eaa6b0cb793e","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:40.768319Z","iopub.execute_input":"2025-05-30T14:13:40.768559Z","iopub.status.idle":"2025-05-30T14:13:40.783325Z","shell.execute_reply.started":"2025-05-30T14:13:40.768531Z","shell.execute_reply":"2025-05-30T14:13:40.782660Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"_uuid":"51571579-8578-47a0-a632-ccab2da7b4d5","_cell_guid":"829e7965-8a3e-4c91-90ba-20a3c09add82","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def parse_data(example_proto):\n    feature_description = {\n        'image':tf.io.FixedLenFeature([],tf.string),\n        'id':tf.io.FixedLenFeature([],tf.string),\n        'class':tf.io.FixedLenFeature([],tf.int64),\n    }\n    example = tf.io.parse_single_example(example_proto,feature_description)\n    image = tf.io.decode_jpeg(example['image'],channels=3)\n    image = tf.image.resize(image,[224,224])\n    image = tf.cast(image,tf.float32)/255.0\n    label = example['class']\n    print(example)\n    print(image)\n    print(label)\n    return image,label","metadata":{"_uuid":"15f559b1-a63c-4eb9-b8b7-f4881c0c9c1b","_cell_guid":"271da4ce-6b25-4430-9c49-de711a2f0c92","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:40.786022Z","iopub.execute_input":"2025-05-30T14:13:40.786286Z","iopub.status.idle":"2025-05-30T14:13:40.799834Z","shell.execute_reply.started":"2025-05-30T14:13:40.786268Z","shell.execute_reply":"2025-05-30T14:13:40.799215Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\ndef parse_data_without_label(example_proto):\n    feature_description = {'image':tf.io.FixedLenFeature([],tf.string),'id':tf.io.FixedLenFeature([],tf.string),}\n    parsed_example = tf.io.parse_single_example(example_proto, feature_description) \n    image = tf.io.decode_jpeg(parsed_example['image'], channels=3)\n    print(image)\n    image = tf.image.resize(image, [224, 224])\n    image = tf.cast(image, tf.float32) / 255.0\n    print(image)\n    return image","metadata":{"_uuid":"c1d5d9dc-409c-4e3c-a8d0-e683ab527e31","_cell_guid":"474d347e-ba6a-4760-aef2-d0690d9c5ce8","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:40.800593Z","iopub.execute_input":"2025-05-30T14:13:40.800768Z","iopub.status.idle":"2025-05-30T14:13:40.818481Z","shell.execute_reply.started":"2025-05-30T14:13:40.800755Z","shell.execute_reply":"2025-05-30T14:13:40.817690Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_dataset = tf.data.TFRecordDataset(train_files)\ntrain_dataset = train_dataset.map(parse_data,num_parallel_calls=tf.data.AUTOTUNE)\ntrain_dataset = train_dataset.shuffle(1024).batch(32).prefetch(tf.data.AUTOTUNE)\n# train_dataset = train_dataset.repeat()\n\n\n\n","metadata":{"_uuid":"f150de6f-1959-45cc-92a6-d05660392863","_cell_guid":"5d875777-ce61-4e27-8bc9-c503f84a2f33","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:40.819362Z","iopub.execute_input":"2025-05-30T14:13:40.819651Z","iopub.status.idle":"2025-05-30T14:13:42.117322Z","shell.execute_reply.started":"2025-05-30T14:13:40.819623Z","shell.execute_reply":"2025-05-30T14:13:42.116581Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"val_dataset = tf.data.TFRecordDataset(val_files)\nval_dataset = val_dataset.map(parse_data)\nval_dataset = val_dataset.batch(32)\n# val_dataset = val_dataset.repeat()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-30T14:13:42.118087Z","iopub.execute_input":"2025-05-30T14:13:42.118390Z","iopub.status.idle":"2025-05-30T14:13:42.157285Z","shell.execute_reply.started":"2025-05-30T14:13:42.118353Z","shell.execute_reply":"2025-05-30T14:13:42.156643Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test_dataset=tf.data.TFRecordDataset(test_files)\ntest_dataset = test_dataset.map(parse_data_without_label)\ntest_dataset = test_dataset.batch(32)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-30T14:13:42.158222Z","iopub.execute_input":"2025-05-30T14:13:42.158490Z","iopub.status.idle":"2025-05-30T14:13:42.233470Z","shell.execute_reply.started":"2025-05-30T14:13:42.158466Z","shell.execute_reply":"2025-05-30T14:13:42.232841Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"raw_dataset = tf.data.TFRecordDataset(val_files)\nfor raw_record in raw_dataset.take(1):\n    example = tf.train.Example()\n    example.ParseFromString(raw_record.numpy())\n    print(example)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-30T14:13:42.234224Z","iopub.execute_input":"2025-05-30T14:13:42.234441Z","iopub.status.idle":"2025-05-30T14:13:42.309766Z","shell.execute_reply.started":"2025-05-30T14:13:42.234425Z","shell.execute_reply":"2025-05-30T14:13:42.308731Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\nimport matplotlib.pyplot as plt\n\nfor image_batch,label in train_dataset.take(1):\n    for i in range(5):\n        plt.imshow(image_batch[i].numpy())\n        plt.title(f\"Label: {label[i].numpy()}\")\n        plt.axis('off')\n        plt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-30T14:13:42.310725Z","iopub.execute_input":"2025-05-30T14:13:42.310953Z","iopub.status.idle":"2025-05-30T14:13:44.084057Z","shell.execute_reply.started":"2025-05-30T14:13:42.310934Z","shell.execute_reply":"2025-05-30T14:13:44.083445Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_dataset","metadata":{"_uuid":"b28ac028-87d4-4e66-a443-3b70e1901d75","_cell_guid":"d703da66-7a35-42c1-a994-f2e247be4d7a","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:44.084727Z","iopub.execute_input":"2025-05-30T14:13:44.084925Z","iopub.status.idle":"2025-05-30T14:13:44.090001Z","shell.execute_reply.started":"2025-05-30T14:13:44.084909Z","shell.execute_reply":"2025-05-30T14:13:44.089452Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# batch_size=32\n# steps_per_epoch = len(train_dataset) // batch_size\n# validation_steps = len(val_dataset) // batch_size\n# pritn(steps_per_epoch,validation_steps)","metadata":{"_uuid":"1ea7d911-72c3-4e22-8d41-ba08916ce738","_cell_guid":"99734bba-962a-4296-b210-12d004b19780","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:44.090853Z","iopub.execute_input":"2025-05-30T14:13:44.091114Z","iopub.status.idle":"2025-05-30T14:13:44.116588Z","shell.execute_reply.started":"2025-05-30T14:13:44.091088Z","shell.execute_reply":"2025-05-30T14:13:44.115744Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from tensorflow.keras.applications import EfficientNetB0\nfrom tensorflow.keras.models import Model\nfrom tensorflow.keras.layers import Input,Dense,Dropout,GlobalAveragePooling2D\nfrom tensorflow.keras.callbacks import EarlyStopping,ModelCheckpoint","metadata":{"_uuid":"aead57d3-2652-46a0-8607-5cb9010b61eb","_cell_guid":"434a365a-0b67-4845-99c4-e92e74cc327b","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:44.117486Z","iopub.execute_input":"2025-05-30T14:13:44.117730Z","iopub.status.idle":"2025-05-30T14:13:44.199136Z","shell.execute_reply.started":"2025-05-30T14:13:44.117708Z","shell.execute_reply":"2025-05-30T14:13:44.198581Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Detect hardware, return appropriate distribution strategy\ntry:\n    tpu = tf.distribute.cluster_resolver.TPUClusterResolver()  # TPU detection. No parameters necessary if TPU_NAME environment variable is set. On Kaggle this is always the case.\n    print('Running on TPU ', tpu.master())\nexcept ValueError:\n    tpu = None\n\nif tpu:\n    tf.config.experimental_connect_to_cluster(tpu)\n    tf.tpu.experimental.initialize_tpu_system(tpu)\n    strategy = tf.distribute.experimental.TPUStrategy(tpu)\nelse:\n    strategy = tf.distribute.get_strategy() # default distribution strategy in Tensorflow. Works on CPU and single GPU.\n\nprint(\"REPLICAS: \", strategy.num_replicas_in_sync)","metadata":{"_uuid":"b9d51a16-fb32-4d6c-9e55-f98e09e18676","_cell_guid":"945c4f4c-684c-48c2-aafa-1a5b28e5e0a1","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:44.199920Z","iopub.execute_input":"2025-05-30T14:13:44.200200Z","iopub.status.idle":"2025-05-30T14:13:44.205637Z","shell.execute_reply.started":"2025-05-30T14:13:44.200155Z","shell.execute_reply":"2025-05-30T14:13:44.205002Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"IMAGE_SIZE = [224, 224]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-30T14:13:44.206512Z","iopub.execute_input":"2025-05-30T14:13:44.206771Z","iopub.status.idle":"2025-05-30T14:13:44.220666Z","shell.execute_reply.started":"2025-05-30T14:13:44.206747Z","shell.execute_reply":"2025-05-30T14:13:44.219807Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"with strategy.scope():\n    pretrained_model = tf.keras.applications.EfficientNetB0(\n        weights='imagenet',\n        include_top=False ,\n        input_shape=[*IMAGE_SIZE, 3]\n    )\n    pretrained_model.trainable = False\n    \n    model = tf.keras.Sequential([\n        # To a base pretrained on ImageNet to extract features from images...\n        pretrained_model,\n        # ... attach a new head to act as a classifier.\n        tf.keras.layers.GlobalAveragePooling2D(),\n        tf.keras.layers.Dense(len(CLASSES), activation='softmax')\n    ])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-30T14:13:44.221523Z","iopub.execute_input":"2025-05-30T14:13:44.222227Z","iopub.status.idle":"2025-05-30T14:13:46.745980Z","shell.execute_reply.started":"2025-05-30T14:13:44.222199Z","shell.execute_reply":"2025-05-30T14:13:46.745203Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model.compile(\n    optimizer='adam',\n    loss = 'sparse_categorical_crossentropy',\n    metrics=['sparse_categorical_accuracy'],\n)\n\nmodel.summary()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-30T14:13:46.746843Z","iopub.execute_input":"2025-05-30T14:13:46.747469Z","iopub.status.idle":"2025-05-30T14:13:46.773740Z","shell.execute_reply.started":"2025-05-30T14:13:46.747445Z","shell.execute_reply":"2025-05-30T14:13:46.773028Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# with strategy.scope():\n#     base_model = EfficientNetB0(include_top=False,input_shape=(224,224,3),weights='imagenet')\n#     x=base_model.output\n#     x = GlobalAveragePooling2D()(x)\n#     output = Dense(104,activation='softmax')(x)\n#     model = Model(inputs=base_model.input,outputs=output)\n#     model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['sparse_categorical_accuracy'])\n#     model.summary()","metadata":{"_uuid":"1fbe91fc-7e55-4287-80a6-12f6d67270c4","_cell_guid":"0000b050-98c8-4bec-a752-5ea7667b3d27","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:46.774556Z","iopub.execute_input":"2025-05-30T14:13:46.774822Z","iopub.status.idle":"2025-05-30T14:13:46.778342Z","shell.execute_reply.started":"2025-05-30T14:13:46.774798Z","shell.execute_reply":"2025-05-30T14:13:46.777649Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"Early_stopping = EarlyStopping(patience=3,monitor='val_loss',restore_best_weights=True)\nModel_checkpoint = ModelCheckpoint(filepath='best_model.keras',monitor='val_loss',save_best_only=True)","metadata":{"_uuid":"6387cf16-67cd-4f4f-97c3-8674c7c98d7f","_cell_guid":"913b6d60-36d7-4e2f-b005-4261189028d3","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:46.779082Z","iopub.execute_input":"2025-05-30T14:13:46.779288Z","iopub.status.idle":"2025-05-30T14:13:46.795153Z","shell.execute_reply.started":"2025-05-30T14:13:46.779270Z","shell.execute_reply":"2025-05-30T14:13:46.794568Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model.fit(train_dataset,validation_data = val_dataset,epochs=20,callbacks=[Early_stopping,Model_checkpoint])","metadata":{"_uuid":"e88f5412-5612-4bdd-ab07-b8d3d3104e08","_cell_guid":"c4e7ea01-79a7-41c4-bc5c-5c5529804828","trusted":true,"collapsed":false,"execution":{"iopub.status.busy":"2025-05-30T14:13:46.795779Z","iopub.execute_input":"2025-05-30T14:13:46.795973Z","iopub.status.idle":"2025-05-30T14:15:53.245250Z","shell.execute_reply.started":"2025-05-30T14:13:46.795958Z","shell.execute_reply":"2025-05-30T14:15:53.244625Z"},"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"_uuid":"bf6b4843-39a6-4f0c-9366-45bf6d7d747d","_cell_guid":"3360dc7a-1393-4321-8620-878b73ca62d4","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"_uuid":"42a9948c-4fb2-4f56-82c0-f90e5ba40417","_cell_guid":"cb9d06f7-bfdc-43b7-b8e6-08d3511c47c7","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"_uuid":"dbf8d132-6361-4fa2-bb77-c4553a785636","_cell_guid":"397b8c82-9ac4-46c5-ac89-905dcc9b8ce9","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"_uuid":"12409048-2049-4358-9d7c-880a094c332c","_cell_guid":"e4457b3d-212c-488c-89fd-e7abe1e94a8d","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"_uuid":"4ec811ca-4280-4b24-be65-31a3052614e0","_cell_guid":"5a2da5f8-aceb-44cd-a6e6-37c7f84f4076","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"_uuid":"33c1ef10-3aa0-461a-9753-bf0e22c67b9a","_cell_guid":"e41ce488-09f1-48ed-b664-4b10081f05e0","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"_uuid":"22459a8c-c4e2-4218-bdf8-6a104087294b","_cell_guid":"9b406a9e-3a9d-4f5f-bcbc-e6a542321b2f","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"_uuid":"5a83fc2a-04b9-469a-9505-8df904b6a424","_cell_guid":"fb27ef28-39ec-4a6e-bd17-6bec1be572b9","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"_uuid":"de50ed3d-a3f4-49b2-acd5-c306c6164704","_cell_guid":"cd7550a5-afcd-4563-a280-0c1d13d4b409","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"_uuid":"cc750acf-267d-4305-a515-61abd8c2a9e3","_cell_guid":"b9494e51-db78-47f7-b45d-ddf368c24f97","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"_uuid":"a93957b3-06d7-48dc-81f6-0bf92cd3cbe3","_cell_guid":"38b61cc9-6dfb-4eec-9cf7-73a5090298da","trusted":true,"collapsed":false,"jupyter":{"outputs_hidden":false}},"outputs":[],"execution_count":null}]}