{
  "id": 272790,
  "title": "Single model",
  "url": "/competitions/ranzcr-clip-catheter-line-classification/discussion/272790",
  "author_name": "EST",
  "post_date": "2021-09-17T09:49:03.806000",
  "votes": 0,
  "comment_count": 0,
  "views": 0,
  "content": "<p>Hello,<br>\nI'm working on this dataset for 4 months , i tried to train a single model using tensorflow and i can't overpass \"accuracy 81%\" . i need strongly your helps to improve my training . my code is below.<br>\nThanks;)</p>\n<p>import matplotlib.pyplot as plt<br>\nimport numpy as np<br>\nimport os<br>\nimport tensorflow as tf<br>\nimport tensorflow.keras.layers as tfl<br>\nfrom tensorflow.keras.layers import Flatten ,Dense<br>\nfrom tensorflow.keras.preprocessing import image_dataset_from_directory<br>\nfrom tensorflow.keras.layers.experimental.preprocessing import RandomFlip,RandomZoom,Rescaling, RandomRotation,RandomCrop,RandomContrast,Normalization</p>\n<h1>load data</h1>\n<p>import pandas as pd<br>\ntrain_df = pd.read_csv('/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train.csv')</p>\n<h1>sample_df.shape</h1>\n<p>def append_ext(fn):<br>\n    return fn+\".jpg\"</p>\n<p>train_df[\"StudyInstanceUID\"]=train_df[\"StudyInstanceUID\"].apply(append_ext)</p>\n<p>BATCH_SIZE = 64<br>\nIMG_SIZE = (224, 224)<br>\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator<br>\nlabel=['ETT - Abnormal', 'ETT - Borderline',<br>\n       'ETT - Normal', 'NGT - Abnormal', 'NGT - Borderline',<br>\n       'NGT - Incompletely Imaged', 'NGT - Normal', 'CVC - Abnormal',<br>\n       'CVC - Borderline', 'CVC - Normal', 'Swan Ganz Catheter Present']</p>\n<p>datagen=ImageDataGenerator(validation_split=0.15,<br>\n                          #rotation_range=rotation_range,<br>\n                          #horizontal_flip= True,<br>\n                          rescale=1./255.)</p>\n<p>train_dataset=datagen.flow_from_dataframe(<br>\n    dataframe=train_df,<br>\n    directory=\"/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train/\",<br>\n    x_col=\"StudyInstanceUID\",<br>\n    y_col=label,<br>\n    #subset=\"training\",<br>\n    batch_size=BATCH_SIZE,<br>\n    color_mode='rgb',<br>\n    labels_mode ='binary',<br>\n    class_mode='raw',<br>\n    target_size=IMG_SIZE,<br>\n    shuffle=True,<br>\n    seed=42,<br>\n    interpolation=\"bilinear\")</p>\n<p>validation_dataset=datagen.flow_from_dataframe(<br>\ndataframe=train_df,<br>\ndirectory=\"/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train\",<br>\nx_col=\"StudyInstanceUID\",<br>\ny_col=label,<br>\nsubset=\"validation\",<br>\nbatch_size=BATCH_SIZE,<br>\ncolor_mode='rgb',<br>\nlabels_mode ='binary',<br>\nclass_mode='raw',<br>\ntarget_size=IMG_SIZE,<br>\nshuffle=True,<br>\nseed=42)</p>\n<p>def data_augmenter():<br>\n    '''<br>\n    Create a Sequential model composed of 2 layers<br>\n    Returns:<br>\n        tf.keras.Sequential<br>\n    '''<br>\n    ### START CODE HERE<br>\n    data_augmentation = tf.keras.Sequential()<br>\n    data_augmentation.add(RandomFlip('horizontal'))<br>\n    data_augmentation.add(RandomRotation(0.05))<br>\n    data_augmentation.add(RandomCrop(224,224))<br>\n    data_augmentation.add(RandomContrast(0.2))<br>\n    data_augmentation.add(Normalization())<br>\n    ### END CODE HERE</p>\n<pre><code>return data_augmentation\n</code></pre>\n<p>data_augmentation = data_augmenter()</p>\n<h1>preprocess_input = tf.keras.applications.mobilenet_v2.preprocess_input</h1>\n<p>from tensorflow.keras.applications.densenet import DenseNet121<br>\nIMG_SHAPE = IMG_SIZE + (3,)<br>\nbase_model = DenseNet121(weights = \"imagenet\", include_top=False,  input_shape=IMG_SHAPE)</p>\n<p>nb_layers = len(base_model.layers)<br>\nprint(base_model.layers[nb_layers - 2].name)<br>\nprint(base_model.layers[nb_layers - 1].name)</p>\n<p>image_batch, label_batch = next(iter(train_dataset))<br>\nfeature_batch = base_model(image_batch)<br>\nprint(feature_batch.shape)</p>\n<p>base_model.trainable = False<br>\nimage_var = tf.Variable(image_batch)</p>\n<p>base_model.trainable = False<br>\nimage_var = tf.Variable(image_batch)<br>\npred = base_model(image_var)</p>\n<p>def My_model(image_shape=IMG_SIZE, data_augmentation=data_augmenter()):<br>\n    from tensorflow.keras import Model, initializers, regularizers<br>\n    initializer1 = initializers.GlorotNormal()</p>\n<pre><code>input_shape = image_shape + (3,)\n\n\nbase_model = DenseNet121(weights = \"imagenet\", include_top=False,  input_shape=IMG_SHAPE)\n\nbase_model.trainable = base_model.trainable=False\n\ninputs = tf.keras.Input(shape=input_shape)\n\nx = data_augmenter()(inputs)\n\nx = base_model(inputs, training=False)\n\nx =  Flatten()(x)\nx = Dense(1024, kernel_initializer=initializer1 ,activation='relu')(x)\nx = tfl.Dropout(0.4)(x)  \n\noutputs = tfl.Dense(11,activation='sigmoid')(x)\n\nmodel = tf.keras.Model(inputs, outputs)\n\nreturn model\n</code></pre>\n<p>model2 = My_model(IMG_SIZE, data_augmentation)</p>\n<p>base_learning_rate = 0.001<br>\nmodel2.compile(loss='binary_crossentropy', optimizer= tf.keras.optimizers.Adam(lr=base_learning_rate),<br>\n               metrics=[tf.keras.metrics.AUC(name='auc',multi_label= True)])</p>\n<p>initial_learning_rate = 0.001<br>\ndef lr_exp_decay(epoch, lr):<br>\n    k = 0.1<br>\n    return initial_learning_rate * tf.math.exp(-k*epoch)</p>\n<p>initial_epochs = 25<br>\nhistory = model2.fit(train_dataset, epochs=initial_epochs , callbacks=[tf.keras.callbacks.LearningRateScheduler(lr_exp_decay, verbose=1)])</p>",
  "messages": [
    {
      "id": 1515625,
      "postDate": "2021-09-17T09:49:03.807Z",
      "content": "<p>Hello,<br>\nI'm working on this dataset for 4 months , i tried to train a single model using tensorflow and i can't overpass \"accuracy 81%\" . i need strongly your helps to improve my training . my code is below.<br>\nThanks;)</p>\n<p>import matplotlib.pyplot as plt<br>\nimport numpy as np<br>\nimport os<br>\nimport tensorflow as tf<br>\nimport tensorflow.keras.layers as tfl<br>\nfrom tensorflow.keras.layers import Flatten ,Dense<br>\nfrom tensorflow.keras.preprocessing import image_dataset_from_directory<br>\nfrom tensorflow.keras.layers.experimental.preprocessing import RandomFlip,RandomZoom,Rescaling, RandomRotation,RandomCrop,RandomContrast,Normalization</p>\n<h1>load data</h1>\n<p>import pandas as pd<br>\ntrain_df = pd.read_csv('/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train.csv')</p>\n<h1>sample_df.shape</h1>\n<p>def append_ext(fn):<br>\n    return fn+\".jpg\"</p>\n<p>train_df[\"StudyInstanceUID\"]=train_df[\"StudyInstanceUID\"].apply(append_ext)</p>\n<p>BATCH_SIZE = 64<br>\nIMG_SIZE = (224, 224)<br>\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator<br>\nlabel=['ETT - Abnormal', 'ETT - Borderline',<br>\n       'ETT - Normal', 'NGT - Abnormal', 'NGT - Borderline',<br>\n       'NGT - Incompletely Imaged', 'NGT - Normal', 'CVC - Abnormal',<br>\n       'CVC - Borderline', 'CVC - Normal', 'Swan Ganz Catheter Present']</p>\n<p>datagen=ImageDataGenerator(validation_split=0.15,<br>\n                          #rotation_range=rotation_range,<br>\n                          #horizontal_flip= True,<br>\n                          rescale=1./255.)</p>\n<p>train_dataset=datagen.flow_from_dataframe(<br>\n    dataframe=train_df,<br>\n    directory=\"/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train/\",<br>\n    x_col=\"StudyInstanceUID\",<br>\n    y_col=label,<br>\n    #subset=\"training\",<br>\n    batch_size=BATCH_SIZE,<br>\n    color_mode='rgb',<br>\n    labels_mode ='binary',<br>\n    class_mode='raw',<br>\n    target_size=IMG_SIZE,<br>\n    shuffle=True,<br>\n    seed=42,<br>\n    interpolation=\"bilinear\")</p>\n<p>validation_dataset=datagen.flow_from_dataframe(<br>\ndataframe=train_df,<br>\ndirectory=\"/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train\",<br>\nx_col=\"StudyInstanceUID\",<br>\ny_col=label,<br>\nsubset=\"validation\",<br>\nbatch_size=BATCH_SIZE,<br>\ncolor_mode='rgb',<br>\nlabels_mode ='binary',<br>\nclass_mode='raw',<br>\ntarget_size=IMG_SIZE,<br>\nshuffle=True,<br>\nseed=42)</p>\n<p>def data_augmenter():<br>\n    '''<br>\n    Create a Sequential model composed of 2 layers<br>\n    Returns:<br>\n        tf.keras.Sequential<br>\n    '''<br>\n    ### START CODE HERE<br>\n    data_augmentation = tf.keras.Sequential()<br>\n    data_augmentation.add(RandomFlip('horizontal'))<br>\n    data_augmentation.add(RandomRotation(0.05))<br>\n    data_augmentation.add(RandomCrop(224,224))<br>\n    data_augmentation.add(RandomContrast(0.2))<br>\n    data_augmentation.add(Normalization())<br>\n    ### END CODE HERE</p>\n<pre><code>return data_augmentation\n</code></pre>\n<p>data_augmentation = data_augmenter()</p>\n<h1>preprocess_input = tf.keras.applications.mobilenet_v2.preprocess_input</h1>\n<p>from tensorflow.keras.applications.densenet import DenseNet121<br>\nIMG_SHAPE = IMG_SIZE + (3,)<br>\nbase_model = DenseNet121(weights = \"imagenet\", include_top=False,  input_shape=IMG_SHAPE)</p>\n<p>nb_layers = len(base_model.layers)<br>\nprint(base_model.layers[nb_layers - 2].name)<br>\nprint(base_model.layers[nb_layers - 1].name)</p>\n<p>image_batch, label_batch = next(iter(train_dataset))<br>\nfeature_batch = base_model(image_batch)<br>\nprint(feature_batch.shape)</p>\n<p>base_model.trainable = False<br>\nimage_var = tf.Variable(image_batch)</p>\n<p>base_model.trainable = False<br>\nimage_var = tf.Variable(image_batch)<br>\npred = base_model(image_var)</p>\n<p>def My_model(image_shape=IMG_SIZE, data_augmentation=data_augmenter()):<br>\n    from tensorflow.keras import Model, initializers, regularizers<br>\n    initializer1 = initializers.GlorotNormal()</p>\n<pre><code>input_shape = image_shape + (3,)\n\n\nbase_model = DenseNet121(weights = \"imagenet\", include_top=False,  input_shape=IMG_SHAPE)\n\nbase_model.trainable = base_model.trainable=False\n\ninputs = tf.keras.Input(shape=input_shape)\n\nx = data_augmenter()(inputs)\n\nx = base_model(inputs, training=False)\n\nx =  Flatten()(x)\nx = Dense(1024, kernel_initializer=initializer1 ,activation='relu')(x)\nx = tfl.Dropout(0.4)(x)  \n\noutputs = tfl.Dense(11,activation='sigmoid')(x)\n\nmodel = tf.keras.Model(inputs, outputs)\n\nreturn model\n</code></pre>\n<p>model2 = My_model(IMG_SIZE, data_augmentation)</p>\n<p>base_learning_rate = 0.001<br>\nmodel2.compile(loss='binary_crossentropy', optimizer= tf.keras.optimizers.Adam(lr=base_learning_rate),<br>\n               metrics=[tf.keras.metrics.AUC(name='auc',multi_label= True)])</p>\n<p>initial_learning_rate = 0.001<br>\ndef lr_exp_decay(epoch, lr):<br>\n    k = 0.1<br>\n    return initial_learning_rate * tf.math.exp(-k*epoch)</p>\n<p>initial_epochs = 25<br>\nhistory = model2.fit(train_dataset, epochs=initial_epochs , callbacks=[tf.keras.callbacks.LearningRateScheduler(lr_exp_decay, verbose=1)])</p>",
      "rawMarkdown": "Hello,\nI'm working on this dataset for 4 months , i tried to train a single model using tensorflow and i can't overpass \"accuracy 81%\" . i need strongly your helps to improve my training . my code is below.\nThanks;)\n\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport os\nimport tensorflow as tf\nimport tensorflow.keras.layers as tfl\nfrom tensorflow.keras.layers import Flatten ,Dense\nfrom tensorflow.keras.preprocessing import image_dataset_from_directory\nfrom tensorflow.keras.layers.experimental.preprocessing import RandomFlip,RandomZoom,Rescaling, RandomRotation,RandomCrop,RandomContrast,Normalization\n\n\n#load data\nimport pandas as pd\ntrain_df = pd.read_csv('/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train.csv')\n#sample_df.shape\ndef append_ext(fn):\n    return fn+\".jpg\"\n\ntrain_df[\"StudyInstanceUID\"]=train_df[\"StudyInstanceUID\"].apply(append_ext)\n\n\nBATCH_SIZE = 64\nIMG_SIZE = (224, 224)\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\nlabel=['ETT - Abnormal', 'ETT - Borderline',\n       'ETT - Normal', 'NGT - Abnormal', 'NGT - Borderline',\n       'NGT - Incompletely Imaged', 'NGT - Normal', 'CVC - Abnormal',\n       'CVC - Borderline', 'CVC - Normal', 'Swan Ganz Catheter Present']\n\ndatagen=ImageDataGenerator(validation_split=0.15,\n                          #rotation_range=rotation_range,\n                          #horizontal_flip= True,\n                          rescale=1./255.)\n\ntrain_dataset=datagen.flow_from_dataframe(\n    dataframe=train_df,\n    directory=\"/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train/\",\n    x_col=\"StudyInstanceUID\",\n    y_col=label,\n    #subset=\"training\",\n    batch_size=BATCH_SIZE,\n    color_mode='rgb',\n    labels_mode ='binary',\n    class_mode='raw',\n    target_size=IMG_SIZE,\n    shuffle=True,\n    seed=42,\n    interpolation=\"bilinear\")\n\nvalidation_dataset=datagen.flow_from_dataframe(\ndataframe=train_df,\ndirectory=\"/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train\",\nx_col=\"StudyInstanceUID\",\ny_col=label,\nsubset=\"validation\",\nbatch_size=BATCH_SIZE,\ncolor_mode='rgb',\nlabels_mode ='binary',\nclass_mode='raw',\ntarget_size=IMG_SIZE,\nshuffle=True,\nseed=42)\n\n\ndef data_augmenter():\n    '''\n    Create a Sequential model composed of 2 layers\n    Returns:\n        tf.keras.Sequential\n    '''\n    ### START CODE HERE\n    data_augmentation = tf.keras.Sequential()\n    data_augmentation.add(RandomFlip('horizontal'))\n    data_augmentation.add(RandomRotation(0.05))\n    data_augmentation.add(RandomCrop(224,224))\n    data_augmentation.add(RandomContrast(0.2))\n    data_augmentation.add(Normalization())\n    ### END CODE HERE\n   \n    return data_augmentation\n\n\n\ndata_augmentation = data_augmenter()\n#preprocess_input = tf.keras.applications.mobilenet_v2.preprocess_input\n\nfrom tensorflow.keras.applications.densenet import DenseNet121\nIMG_SHAPE = IMG_SIZE + (3,)\nbase_model = DenseNet121(weights = \"imagenet\", include_top=False,  input_shape=IMG_SHAPE)\n\n\nnb_layers = len(base_model.layers)\nprint(base_model.layers[nb_layers - 2].name)\nprint(base_model.layers[nb_layers - 1].name)\n\nimage_batch, label_batch = next(iter(train_dataset))\nfeature_batch = base_model(image_batch)\nprint(feature_batch.shape)\n\nbase_model.trainable = False\nimage_var = tf.Variable(image_batch)\n\n\nbase_model.trainable = False\nimage_var = tf.Variable(image_batch)\npred = base_model(image_var)\n\n\n\ndef My_model(image_shape=IMG_SIZE, data_augmentation=data_augmenter()):\n    from tensorflow.keras import Model, initializers, regularizers\n    initializer1 = initializers.GlorotNormal()\n   \n    input_shape = image_shape + (3,)\n   \n\n    base_model = DenseNet121(weights = \"imagenet\", include_top=False,  input_shape=IMG_SHAPE)\n\n    base_model.trainable = base_model.trainable=False\n\n    inputs = tf.keras.Input(shape=input_shape)\n \n    x = data_augmenter()(inputs)\n\n    x = base_model(inputs, training=False)\n\n    x =  Flatten()(x)\n    x = Dense(1024, kernel_initializer=initializer1 ,activation='relu')(x)\n    x = tfl.Dropout(0.4)(x)  \n\n    outputs = tfl.Dense(11,activation='sigmoid')(x)\n  \n    model = tf.keras.Model(inputs, outputs)\n   \n    return model\n\n\nmodel2 = My_model(IMG_SIZE, data_augmentation)\n\n\nbase_learning_rate = 0.001\nmodel2.compile(loss='binary_crossentropy', optimizer= tf.keras.optimizers.Adam(lr=base_learning_rate),\n               metrics=[tf.keras.metrics.AUC(name='auc',multi_label= True)])\n\n\ninitial_learning_rate = 0.001\ndef lr_exp_decay(epoch, lr):\n    k = 0.1\n    return initial_learning_rate * tf.math.exp(-k*epoch)\n\ninitial_epochs = 25\nhistory = model2.fit(train_dataset, epochs=initial_epochs , callbacks=[tf.keras.callbacks.LearningRateScheduler(lr_exp_decay, verbose=1)])"
    }
  ],
  "comments": [],
  "raw_markdown_by_id": {
    "1515625": "Hello,\nI'm working on this dataset for 4 months , i tried to train a single model using tensorflow and i can't overpass \"accuracy 81%\" . i need strongly your helps to improve my training . my code is below.\nThanks;)\n\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport os\nimport tensorflow as tf\nimport tensorflow.keras.layers as tfl\nfrom tensorflow.keras.layers import Flatten ,Dense\nfrom tensorflow.keras.preprocessing import image_dataset_from_directory\nfrom tensorflow.keras.layers.experimental.preprocessing import RandomFlip,RandomZoom,Rescaling, RandomRotation,RandomCrop,RandomContrast,Normalization\n\n\n#load data\nimport pandas as pd\ntrain_df = pd.read_csv('/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train.csv')\n#sample_df.shape\ndef append_ext(fn):\n    return fn+\".jpg\"\n\ntrain_df[\"StudyInstanceUID\"]=train_df[\"StudyInstanceUID\"].apply(append_ext)\n\n\nBATCH_SIZE = 64\nIMG_SIZE = (224, 224)\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\nlabel=['ETT - Abnormal', 'ETT - Borderline',\n       'ETT - Normal', 'NGT - Abnormal', 'NGT - Borderline',\n       'NGT - Incompletely Imaged', 'NGT - Normal', 'CVC - Abnormal',\n       'CVC - Borderline', 'CVC - Normal', 'Swan Ganz Catheter Present']\n\ndatagen=ImageDataGenerator(validation_split=0.15,\n                          #rotation_range=rotation_range,\n                          #horizontal_flip= True,\n                          rescale=1./255.)\n\ntrain_dataset=datagen.flow_from_dataframe(\n    dataframe=train_df,\n    directory=\"/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train/\",\n    x_col=\"StudyInstanceUID\",\n    y_col=label,\n    #subset=\"training\",\n    batch_size=BATCH_SIZE,\n    color_mode='rgb',\n    labels_mode ='binary',\n    class_mode='raw',\n    target_size=IMG_SIZE,\n    shuffle=True,\n    seed=42,\n    interpolation=\"bilinear\")\n\nvalidation_dataset=datagen.flow_from_dataframe(\ndataframe=train_df,\ndirectory=\"/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train\",\nx_col=\"StudyInstanceUID\",\ny_col=label,\nsubset=\"validation\",\nbatch_size=BATCH_SIZE,\ncolor_mode='rgb',\nlabels_mode ='binary',\nclass_mode='raw',\ntarget_size=IMG_SIZE,\nshuffle=True,\nseed=42)\n\n\ndef data_augmenter():\n    '''\n    Create a Sequential model composed of 2 layers\n    Returns:\n        tf.keras.Sequential\n    '''\n    ### START CODE HERE\n    data_augmentation = tf.keras.Sequential()\n    data_augmentation.add(RandomFlip('horizontal'))\n    data_augmentation.add(RandomRotation(0.05))\n    data_augmentation.add(RandomCrop(224,224))\n    data_augmentation.add(RandomContrast(0.2))\n    data_augmentation.add(Normalization())\n    ### END CODE HERE\n   \n    return data_augmentation\n\n\n\ndata_augmentation = data_augmenter()\n#preprocess_input = tf.keras.applications.mobilenet_v2.preprocess_input\n\nfrom tensorflow.keras.applications.densenet import DenseNet121\nIMG_SHAPE = IMG_SIZE + (3,)\nbase_model = DenseNet121(weights = \"imagenet\", include_top=False,  input_shape=IMG_SHAPE)\n\n\nnb_layers = len(base_model.layers)\nprint(base_model.layers[nb_layers - 2].name)\nprint(base_model.layers[nb_layers - 1].name)\n\nimage_batch, label_batch = next(iter(train_dataset))\nfeature_batch = base_model(image_batch)\nprint(feature_batch.shape)\n\nbase_model.trainable = False\nimage_var = tf.Variable(image_batch)\n\n\nbase_model.trainable = False\nimage_var = tf.Variable(image_batch)\npred = base_model(image_var)\n\n\n\ndef My_model(image_shape=IMG_SIZE, data_augmentation=data_augmenter()):\n    from tensorflow.keras import Model, initializers, regularizers\n    initializer1 = initializers.GlorotNormal()\n   \n    input_shape = image_shape + (3,)\n   \n\n    base_model = DenseNet121(weights = \"imagenet\", include_top=False,  input_shape=IMG_SHAPE)\n\n    base_model.trainable = base_model.trainable=False\n\n    inputs = tf.keras.Input(shape=input_shape)\n \n    x = data_augmenter()(inputs)\n\n    x = base_model(inputs, training=False)\n\n    x =  Flatten()(x)\n    x = Dense(1024, kernel_initializer=initializer1 ,activation='relu')(x)\n    x = tfl.Dropout(0.4)(x)  \n\n    outputs = tfl.Dense(11,activation='sigmoid')(x)\n  \n    model = tf.keras.Model(inputs, outputs)\n   \n    return model\n\n\nmodel2 = My_model(IMG_SIZE, data_augmentation)\n\n\nbase_learning_rate = 0.001\nmodel2.compile(loss='binary_crossentropy', optimizer= tf.keras.optimizers.Adam(lr=base_learning_rate),\n               metrics=[tf.keras.metrics.AUC(name='auc',multi_label= True)])\n\n\ninitial_learning_rate = 0.001\ndef lr_exp_decay(epoch, lr):\n    k = 0.1\n    return initial_learning_rate * tf.math.exp(-k*epoch)\n\ninitial_epochs = 25\nhistory = model2.fit(train_dataset, epochs=initial_epochs , callbacks=[tf.keras.callbacks.LearningRateScheduler(lr_exp_decay, verbose=1)])"
  }
}