{
  "id": 272791,
  "title": "Looking for help",
  "url": "/competitions/ranzcr-clip-catheter-line-classification/discussion/272791",
  "author_name": "EST",
  "post_date": "2021-09-17T09:50:16.847000",
  "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<p>load data<br>\nimport pandas as pd<br>\ntrain_df = pd.read_csv('/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train.csv')</p>\n<p>sample_df.shape<br>\ndef append_ext(fn):<br>\nreturn 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,</p>\n<h1>rotation_range=rotation_range,</h1>\n<h1>horizontal_flip= True,</h1>\n<p>rescale=1./255.)</p>\n<p>train_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,</p>\n<h1>subset=\"training\",</h1>\n<p>batch_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,<br>\ninterpolation=\"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>\nCreate a Sequential model composed of 2 layers<br>\nReturns:<br>\ntf.keras.Sequential<br>\n'''</p>\n<h3>START CODE HERE</h3>\n<p>data_augmentation = tf.keras.Sequential()<br>\ndata_augmentation.add(RandomFlip('horizontal'))<br>\ndata_augmentation.add(RandomRotation(0.05))<br>\ndata_augmentation.add(RandomCrop(224,224))<br>\ndata_augmentation.add(RandomContrast(0.2))<br>\ndata_augmentation.add(Normalization())</p>\n<h3>END CODE HERE</h3>\n<p>return data_augmentation<br>\ndata_augmentation = data_augmenter()</p>\n<p>preprocess_input = tf.keras.applications.mobilenet_v2.preprocess_input<br>\nfrom 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>\nfrom tensorflow.keras import Model, initializers, regularizers<br>\ninitializer1 = initializers.GlorotNormal()</p>\n<p>input_shape = image_shape + (3,)</p>\n<p>base_model = DenseNet121(weights = \"imagenet\", include_top=False,  input_shape=IMG_SHAPE)</p>\n<p>base_model.trainable = base_model.trainable=False</p>\n<p>inputs = tf.keras.Input(shape=input_shape)</p>\n<p>x = data_augmenter()(inputs)</p>\n<p>x = base_model(inputs, training=False)</p>\n<p>x =  Flatten()(x)<br>\nx = Dense(1024, kernel_initializer=initializer1 ,activation='relu')(x)<br>\nx = tfl.Dropout(0.4)(x)  </p>\n<p>outputs = tfl.Dense(11,activation='sigmoid')(x)</p>\n<p>model = tf.keras.Model(inputs, outputs)</p>\n<p>return model<br>\nmodel2 = 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>\nmetrics=[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>\nk = 0.1<br>\nreturn 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": 1515628,
      "postDate": "2021-09-17T09:50:16.847Z",
      "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<p>load data<br>\nimport pandas as pd<br>\ntrain_df = pd.read_csv('/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train.csv')</p>\n<p>sample_df.shape<br>\ndef append_ext(fn):<br>\nreturn 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,</p>\n<h1>rotation_range=rotation_range,</h1>\n<h1>horizontal_flip= True,</h1>\n<p>rescale=1./255.)</p>\n<p>train_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,</p>\n<h1>subset=\"training\",</h1>\n<p>batch_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,<br>\ninterpolation=\"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>\nCreate a Sequential model composed of 2 layers<br>\nReturns:<br>\ntf.keras.Sequential<br>\n'''</p>\n<h3>START CODE HERE</h3>\n<p>data_augmentation = tf.keras.Sequential()<br>\ndata_augmentation.add(RandomFlip('horizontal'))<br>\ndata_augmentation.add(RandomRotation(0.05))<br>\ndata_augmentation.add(RandomCrop(224,224))<br>\ndata_augmentation.add(RandomContrast(0.2))<br>\ndata_augmentation.add(Normalization())</p>\n<h3>END CODE HERE</h3>\n<p>return data_augmentation<br>\ndata_augmentation = data_augmenter()</p>\n<p>preprocess_input = tf.keras.applications.mobilenet_v2.preprocess_input<br>\nfrom 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>\nfrom tensorflow.keras import Model, initializers, regularizers<br>\ninitializer1 = initializers.GlorotNormal()</p>\n<p>input_shape = image_shape + (3,)</p>\n<p>base_model = DenseNet121(weights = \"imagenet\", include_top=False,  input_shape=IMG_SHAPE)</p>\n<p>base_model.trainable = base_model.trainable=False</p>\n<p>inputs = tf.keras.Input(shape=input_shape)</p>\n<p>x = data_augmenter()(inputs)</p>\n<p>x = base_model(inputs, training=False)</p>\n<p>x =  Flatten()(x)<br>\nx = Dense(1024, kernel_initializer=initializer1 ,activation='relu')(x)<br>\nx = tfl.Dropout(0.4)(x)  </p>\n<p>outputs = tfl.Dense(11,activation='sigmoid')(x)</p>\n<p>model = tf.keras.Model(inputs, outputs)</p>\n<p>return model<br>\nmodel2 = 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>\nmetrics=[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>\nk = 0.1<br>\nreturn 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\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\nload data\nimport pandas as pd\ntrain_df = pd.read_csv('/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train.csv')\n\nsample_df.shape\ndef append_ext(fn):\nreturn fn+\".jpg\"\n\ntrain_df[\"StudyInstanceUID\"]=train_df[\"StudyInstanceUID\"].apply(append_ext)\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,\nrescale=1./255.)\n\ntrain_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,\n#subset=\"training\",\nbatch_size=BATCH_SIZE,\ncolor_mode='rgb',\nlabels_mode ='binary',\nclass_mode='raw',\ntarget_size=IMG_SIZE,\nshuffle=True,\nseed=42,\ninterpolation=\"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\ndef data_augmenter():\n'''\nCreate a Sequential model composed of 2 layers\nReturns:\ntf.keras.Sequential\n'''\n### START CODE HERE\ndata_augmentation = tf.keras.Sequential()\ndata_augmentation.add(RandomFlip('horizontal'))\ndata_augmentation.add(RandomRotation(0.05))\ndata_augmentation.add(RandomCrop(224,224))\ndata_augmentation.add(RandomContrast(0.2))\ndata_augmentation.add(Normalization())\n### END CODE HERE\n\nreturn data_augmentation\ndata_augmentation = data_augmenter()\n\npreprocess_input = tf.keras.applications.mobilenet_v2.preprocess_input\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\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\nbase_model.trainable = False\nimage_var = tf.Variable(image_batch)\npred = base_model(image_var)\n\ndef My_model(image_shape=IMG_SIZE, data_augmentation=data_augmenter()):\nfrom tensorflow.keras import Model, initializers, regularizers\ninitializer1 = initializers.GlorotNormal()\n\ninput_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\nmodel2 = My_model(IMG_SIZE, data_augmentation)\n\nbase_learning_rate = 0.001\nmodel2.compile(loss='binary_crossentropy', optimizer= tf.keras.optimizers.Adam(lr=base_learning_rate),\nmetrics=[tf.keras.metrics.AUC(name='auc',multi_label= True)])\n\ninitial_learning_rate = 0.001\ndef lr_exp_decay(epoch, lr):\nk = 0.1\nreturn 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": {
    "1515628": "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\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\nload data\nimport pandas as pd\ntrain_df = pd.read_csv('/home/admin/cnn/ranzcr-clip-catheter-line-classification/ranzcr-Original-data/train.csv')\n\nsample_df.shape\ndef append_ext(fn):\nreturn fn+\".jpg\"\n\ntrain_df[\"StudyInstanceUID\"]=train_df[\"StudyInstanceUID\"].apply(append_ext)\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,\nrescale=1./255.)\n\ntrain_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,\n#subset=\"training\",\nbatch_size=BATCH_SIZE,\ncolor_mode='rgb',\nlabels_mode ='binary',\nclass_mode='raw',\ntarget_size=IMG_SIZE,\nshuffle=True,\nseed=42,\ninterpolation=\"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\ndef data_augmenter():\n'''\nCreate a Sequential model composed of 2 layers\nReturns:\ntf.keras.Sequential\n'''\n### START CODE HERE\ndata_augmentation = tf.keras.Sequential()\ndata_augmentation.add(RandomFlip('horizontal'))\ndata_augmentation.add(RandomRotation(0.05))\ndata_augmentation.add(RandomCrop(224,224))\ndata_augmentation.add(RandomContrast(0.2))\ndata_augmentation.add(Normalization())\n### END CODE HERE\n\nreturn data_augmentation\ndata_augmentation = data_augmenter()\n\npreprocess_input = tf.keras.applications.mobilenet_v2.preprocess_input\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\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\nbase_model.trainable = False\nimage_var = tf.Variable(image_batch)\npred = base_model(image_var)\n\ndef My_model(image_shape=IMG_SIZE, data_augmentation=data_augmenter()):\nfrom tensorflow.keras import Model, initializers, regularizers\ninitializer1 = initializers.GlorotNormal()\n\ninput_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\nmodel2 = My_model(IMG_SIZE, data_augmentation)\n\nbase_learning_rate = 0.001\nmodel2.compile(loss='binary_crossentropy', optimizer= tf.keras.optimizers.Adam(lr=base_learning_rate),\nmetrics=[tf.keras.metrics.AUC(name='auc',multi_label= True)])\n\ninitial_learning_rate = 0.001\ndef lr_exp_decay(epoch, lr):\nk = 0.1\nreturn 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)])"
  }
}