{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"DUE TO LARGE SIZE OF THE DATA ONLY FIRST 2000 IMAGES ARE SLECTED , DUE TO MULTI CLASS OF THE LABEL HAVE USED MultiLabelBinarizer FOR UNIFORMITY OF LABEL AND SO THAT IT CAN FITTED IN THE MODEL, NOW SINCE OUR FOCUS IS AROUND THE PROTEIN DATA SET I HAVE USED ONLY THE GREEN IMAGE ","metadata":{}},{"cell_type":"markdown","source":"First We Do some visualisation to see the distribution of Different componenets in our DATA SET of first 2000 images","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport cv2\nimport os\nimport tensorflow as tf\nimport matplotlib.pyplot as plt\nimport seaborn as sns","metadata":{"execution":{"iopub.status.busy":"2023-04-08T05:35:46.314395Z","iopub.execute_input":"2023-04-08T05:35:46.314839Z","iopub.status.idle":"2023-04-08T05:35:47.08154Z","shell.execute_reply.started":"2023-04-08T05:35:46.314799Z","shell.execute_reply":"2023-04-08T05:35:47.080199Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"path='/kaggle/input/human-protein-atlas-image-classification/train'\nimages_label=pd.read_csv('/kaggle/input/human-protein-atlas-image-classification/train.csv')","metadata":{"execution":{"iopub.status.busy":"2023-04-08T05:34:00.035024Z","iopub.execute_input":"2023-04-08T05:34:00.035963Z","iopub.status.idle":"2023-04-08T05:34:00.101214Z","shell.execute_reply.started":"2023-04-08T05:34:00.035887Z","shell.execute_reply":"2023-04-08T05:34:00.099736Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"images_label1=pd.DataFrame(images_label)\nData_Set_Label=images_label1.head(2000)\nlabel_names = {\n    0:  \"Nucleoplasm\",  \n    1:  \"Nuclear membrane\",   \n    2:  \"Nucleoli\",   \n    3:  \"Nucleoli fibrillar center\",   \n    4:  \"Nuclear speckles\",\n    5:  \"Nuclear bodies\",   \n    6:  \"Endoplasmic reticulum\",   \n    7:  \"Golgi apparatus\",   \n    8:  \"Peroxisomes\",   \n    9:  \"Endosomes\",   \n    10:  \"Lysosomes\",   \n    11:  \"Intermediate filaments\",   \n    12:  \"Actin filaments\",   \n    13:  \"Focal adhesion sites\",   \n    14:  \"Microtubules\",   \n    15:  \"Microtubule ends\",   \n    16:  \"Cytokinetic bridge\",   \n    17:  \"Mitotic spindle\",   \n    18:  \"Microtubule organizing center\",   \n    19:  \"Centrosome\",   \n    20:  \"Lipid droplets\",   \n    21:  \"Plasma membrane\",   \n    22:  \"Cell junctions\",   \n    23:  \"Mitochondria\",   \n    24:  \"Aggresome\",   \n    25:  \"Cytosol\",   \n    26:  \"Cytoplasmic bodies\",   \n    27:  \"Rods & rings\"\n}","metadata":{"execution":{"iopub.status.busy":"2023-04-08T05:34:00.436113Z","iopub.execute_input":"2023-04-08T05:34:00.437165Z","iopub.status.idle":"2023-04-08T05:34:00.445267Z","shell.execute_reply.started":"2023-04-08T05:34:00.43711Z","shell.execute_reply":"2023-04-08T05:34:00.443881Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"reverse_train_labels = dict((v,k) for k,v in label_names.items())\nreverse_train_labels","metadata":{"execution":{"iopub.status.busy":"2023-04-08T05:34:01.667737Z","iopub.execute_input":"2023-04-08T05:34:01.668167Z","iopub.status.idle":"2023-04-08T05:34:01.678776Z","shell.execute_reply.started":"2023-04-08T05:34:01.668128Z","shell.execute_reply":"2023-04-08T05:34:01.677439Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def fill_targets(row):\n    row.Target = np.array(row.Target.split(\" \")).astype(np.int)\n    for num in row.Target:\n        name = label_names[int(num)]\n        row.loc[name] = 1\n    return row","metadata":{"execution":{"iopub.status.busy":"2023-04-08T05:35:05.181834Z","iopub.execute_input":"2023-04-08T05:35:05.182272Z","iopub.status.idle":"2023-04-08T05:35:05.189489Z","shell.execute_reply.started":"2023-04-08T05:35:05.182235Z","shell.execute_reply":"2023-04-08T05:35:05.187882Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for key in label_names.keys():\n    Data_Set_Label[label_names[key]] = 0","metadata":{"execution":{"iopub.status.busy":"2023-04-08T05:35:06.074201Z","iopub.execute_input":"2023-04-08T05:35:06.074657Z","iopub.status.idle":"2023-04-08T05:35:06.085684Z","shell.execute_reply.started":"2023-04-08T05:35:06.074613Z","shell.execute_reply":"2023-04-08T05:35:06.084336Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Data_Set_Label = Data_Set_Label.apply(fill_targets, axis=1)\nData_Set_Label.head()","metadata":{"execution":{"iopub.status.busy":"2023-04-08T05:35:06.714356Z","iopub.execute_input":"2023-04-08T05:35:06.715789Z","iopub.status.idle":"2023-04-08T05:35:07.266287Z","shell.execute_reply.started":"2023-04-08T05:35:06.715736Z","shell.execute_reply":"2023-04-08T05:35:07.26507Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Data_Set_Label1=Data_Set_Label.head(2000)","metadata":{"execution":{"iopub.status.busy":"2023-04-08T05:35:34.356139Z","iopub.execute_input":"2023-04-08T05:35:34.356616Z","iopub.status.idle":"2023-04-08T05:35:34.364312Z","shell.execute_reply.started":"2023-04-08T05:35:34.356572Z","shell.execute_reply":"2023-04-08T05:35:34.361807Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"target_counts = Data_Set_Label1.drop([\"Id\", \"Target\"],axis=1).sum(axis=0).sort_values(ascending=False) #vertically\nplt.figure(figsize=(8,8))\nsns.barplot(y=target_counts.index.values, x=target_counts.values, order=target_counts.index)","metadata":{"execution":{"iopub.status.busy":"2023-04-08T05:36:06.073782Z","iopub.execute_input":"2023-04-08T05:36:06.074228Z","iopub.status.idle":"2023-04-08T05:36:06.634523Z","shell.execute_reply.started":"2023-04-08T05:36:06.07419Z","shell.execute_reply":"2023-04-08T05:36:06.633212Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Now Lets check what is the multi Class Values Available for the Images and there count","metadata":{}},{"cell_type":"code","source":"Data_Set_Label1[\"number_of_targets\"] = Data_Set_Label1.drop([\"Id\", \"Target\"],axis=1).sum(axis=1) #horizontally\ncount_perc = np.round(100 * Data_Set_Label1[\"number_of_targets\"].value_counts() / Data_Set_Label1.shape[0], 2)\nplt.figure(figsize=(20,5))\nsns.barplot(x=count_perc.index.values, y=count_perc.values, palette=\"Reds\")\nplt.xlabel(\"Number of targets per image\")\nplt.ylabel(\"% of train data\")","metadata":{"execution":{"iopub.status.busy":"2023-04-08T05:39:10.928243Z","iopub.execute_input":"2023-04-08T05:39:10.928805Z","iopub.status.idle":"2023-04-08T05:39:11.214546Z","shell.execute_reply.started":"2023-04-08T05:39:10.928754Z","shell.execute_reply":"2023-04-08T05:39:11.213171Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Now Let's Start With Data Set prepartion for model , first we are preparing the Labels","metadata":{}},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nfrom sklearn.preprocessing import MultiLabelBinarizer\nimport matplotlib.pyplot as plt\nfrom PIL import Image","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:06:01.727964Z","iopub.execute_input":"2023-04-08T06:06:01.728403Z","iopub.status.idle":"2023-04-08T06:06:01.734671Z","shell.execute_reply.started":"2023-04-08T06:06:01.728362Z","shell.execute_reply":"2023-04-08T06:06:01.733233Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = pd.read_csv('/kaggle/input/human-protein-atlas-image-classification/train.csv')\nvalue=df.head(2000)\n# Convert the labels column to a list of lists\nlabels = value['Target'].apply(lambda x: x.split(' ')).tolist()\n\n# Convert the labels to one-hot encoded vectors\nmlb = MultiLabelBinarizer()\none_hot_labels = mlb.fit_transform(labels)","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:06:02.091Z","iopub.execute_input":"2023-04-08T06:06:02.091423Z","iopub.status.idle":"2023-04-08T06:06:02.133678Z","shell.execute_reply.started":"2023-04-08T06:06:02.09138Z","shell.execute_reply":"2023-04-08T06:06:02.132304Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"one_hot_labels [1]","metadata":{"execution":{"iopub.status.busy":"2023-04-07T18:17:15.210654Z","iopub.execute_input":"2023-04-07T18:17:15.211522Z","iopub.status.idle":"2023-04-07T18:17:15.221763Z","shell.execute_reply.started":"2023-04-07T18:17:15.211459Z","shell.execute_reply":"2023-04-07T18:17:15.219967Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = pd.read_csv('/kaggle/input/human-protein-atlas-image-classification/train.csv')\npath_to_train = '/kaggle/input/human-protein-atlas-image-classification/train/'","metadata":{"execution":{"iopub.status.busy":"2023-04-07T18:19:10.875853Z","iopub.execute_input":"2023-04-07T18:19:10.876242Z","iopub.status.idle":"2023-04-07T18:19:10.914497Z","shell.execute_reply.started":"2023-04-07T18:19:10.876209Z","shell.execute_reply":"2023-04-07T18:19:10.912336Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df[\"complete_path\"] = path_to_train + df[\"Id\"]","metadata":{"execution":{"iopub.status.busy":"2023-04-07T18:19:20.097096Z","iopub.execute_input":"2023-04-07T18:19:20.097909Z","iopub.status.idle":"2023-04-07T18:19:20.111594Z","shell.execute_reply.started":"2023-04-07T18:19:20.097844Z","shell.execute_reply":"2023-04-07T18:19:20.110413Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import random\nfig, axes = plt.subplots(3, 4, figsize=(11, 11))\nfor i in range(3):\n    for j in range(4):\n        idx = random.randint(0, df.shape[0])\n        row = df.iloc[idx,:]\n        path = row.complete_path\n        red = np.array(Image.open(path + '_red.png'))\n        green = Image.open(path + '_green.png')\n        blue = np.array(Image.open(path + '_blue.png'))\n        im = np.stack((\n                red,\n                green,\n                blue),-1)\n        \n        print(im.shape)\n        axes[i][j].imshow(im)\n        axes[i][j].set_title(row.Target)\n        axes[i][j].set_xticks([])\n        axes[i][j].set_yticks([])\nfig.tight_layout()\nfig.show();","metadata":{"execution":{"iopub.status.busy":"2023-04-07T18:19:49.490303Z","iopub.execute_input":"2023-04-07T18:19:49.490661Z","iopub.status.idle":"2023-04-07T18:19:51.640214Z","shell.execute_reply.started":"2023-04-07T18:19:49.490634Z","shell.execute_reply":"2023-04-07T18:19:51.639024Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Above Images show the Multiple aspects of the image in which the Green One represents the protein","metadata":{}},{"cell_type":"code","source":"import os\nimport numpy as np\nimport pandas as pd\nfrom PIL import Image\nfrom sklearn.preprocessing import MultiLabelBinarizer\n\n# Set up file paths\ntrain_dir = '/kaggle/input/human-protein-atlas-image-classification/train'\n\n# Load train labels file\ntrain_labels_file = '/kaggle/input/human-protein-atlas-image-classification/train.csv'\ntrain_labels = pd.read_csv(train_labels_file)\n\n# Remove any whitespace characters from labels\ntrain_labels['Target'] = train_labels['Target'].apply(lambda x: ''.join(x.split()))\n\n# Define image dimensions\nimg_rows = 512\nimg_cols = 512\nchannels = 1\n\n# Create empty arrays for images and labels\nnum_samples = 2000\nx_train = np.empty((num_samples, img_rows, img_cols, channels), dtype=np.uint8)\ny_train = np.empty((num_samples, 28), dtype=np.uint8)\n\n# Iterate through first 2000 images in train directory\nfor i, image_id in enumerate(train_labels['Id'][:num_samples]):\n    # Load image file\n    image_file = os.path.join(train_dir, image_id + '_green.png')\n#     image_file2=os.path.join(train_dir, image_id + '_red.png')\n#     image_file3=os.path.join(train_dir, image_id + '_blue.png')\n    \n    image = np.array(Image.open(image_file))\n   \n    \n\n#     image=image.resize((256, 256, 1))\n    img=image.reshape((512, 512, 1))\n      \n\n    \n#     image2 = np.array(Image.open(image_file2))\n#     image3 = np.array(Image.open(image_file3))\n    \n#     im = np.stack((\n#                 image,\n#                 image2,\n#                 image3),-1)\n    \n\n    # Convert image to numpy array\n  \n    x_train[i] =img\n\n    # Get labels for image and store in y_train\n    labels = train_labels.iloc[i, 1:].values.astype(np.uint8)\n    y_train[i] = labels\n\n# Normalize pixel values to range [0, 1]\nx_train = x_train.astype('float32')\nx_train /= 255.0\n\n\n\n# Split data into training and validation sets\nval_split = 0.2\nnum_val = int(val_split * num_samples)\n\nx_val = x_train[:num_val]\n\n\nx_train = x_train[num_val:]\n","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:04:55.177874Z","iopub.execute_input":"2023-04-08T06:04:55.178693Z","iopub.status.idle":"2023-04-08T06:05:13.432711Z","shell.execute_reply.started":"2023-04-08T06:04:55.178649Z","shell.execute_reply":"2023-04-08T06:05:13.431343Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.imshow(x_train[99])","metadata":{"execution":{"iopub.status.busy":"2023-04-07T18:22:39.733144Z","iopub.execute_input":"2023-04-07T18:22:39.733996Z","iopub.status.idle":"2023-04-07T18:22:39.963836Z","shell.execute_reply.started":"2023-04-07T18:22:39.733964Z","shell.execute_reply":"2023-04-07T18:22:39.9622Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_train=one_hot_labels[400:]\ny_val=one_hot_labels[:400]","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:06:12.65907Z","iopub.execute_input":"2023-04-08T06:06:12.659518Z","iopub.status.idle":"2023-04-08T06:06:12.665774Z","shell.execute_reply.started":"2023-04-08T06:06:12.659477Z","shell.execute_reply":"2023-04-08T06:06:12.664414Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"img_width, img_height =512,512\nimg_channel = 1\nimg_shape = (img_width, img_height, img_channel)\nnum_classes = 28\nz_dim = 100","metadata":{"execution":{"iopub.status.busy":"2023-04-07T18:29:03.320612Z","iopub.execute_input":"2023-04-07T18:29:03.321069Z","iopub.status.idle":"2023-04-07T18:29:03.327385Z","shell.execute_reply.started":"2023-04-07T18:29:03.321032Z","shell.execute_reply":"2023-04-07T18:29:03.326023Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"BUILDING THE First  CGAN MODEL","metadata":{}},{"cell_type":"code","source":"from keras.layers import UpSampling2D, Reshape, Activation, Conv2D, BatchNormalization, LeakyReLU, Input, Flatten, multiply\nfrom keras.layers import Dense, Embedding\nfrom keras.models import Sequential, Model\n\ndef build_generator():\n    model = Sequential()\n    model.add(Dense(256*32*32, activation='relu', input_shape=(z_dim,)))\n    model.add(Reshape((32, 32, 256)))\n    model.add(UpSampling2D())\n    model.add(Conv2D(256, kernel_size=3, strides=2, padding='same'))\n    model.add(BatchNormalization())\n    model.add(LeakyReLU(alpha=0.02))\n    model.add(UpSampling2D())\n    model.add(Conv2D(128, kernel_size=3, strides=2, padding='same'))\n    model.add(BatchNormalization())\n    model.add(LeakyReLU(alpha=0.02))\n    model.add(UpSampling2D())\n    model.add(Conv2D(64, kernel_size=3, strides=2, padding='same'))\n    model.add(BatchNormalization())\n    model.add(LeakyReLU(alpha=0.02))\n    model.add(UpSampling2D())\n    model.add(Conv2D(32, kernel_size=3, strides=2, padding='same'))\n    model.add(BatchNormalization())\n    model.add(LeakyReLU(alpha=0.02))\n    model.add(UpSampling2D())\n    model.add(Conv2D(16, kernel_size=3, strides=2, padding='same'))\n    model.add(BatchNormalization())\n    model.add(LeakyReLU(alpha=0.02))\n    model.add(UpSampling2D())\n    model.add(Conv2D(1, kernel_size=3, strides=1, padding='same'))\n    model.add(Activation('tanh'))\n    \n    z = Input(shape=(z_dim,))\n    label = Input(shape=(1,), dtype='int32')\n    \n    label_embedding = Embedding(num_classes, z_dim, input_length=1)(label)\n    label_embedding = Flatten()(label_embedding)\n    joined = multiply([z, label_embedding])\n    \n    img = model(joined)\n    img = UpSampling2D(size=(2, 2))(img)\n    img = Conv2D(1, kernel_size=3, strides=1, padding='same')(img)\n    img = Activation('tanh')(img)\n    img = UpSampling2D(size=(2, 2))(img)\n    img = Conv2D(1, kernel_size=3, strides=1, padding='same')(img)\n    img = Activation('tanh')(img)\n    img = UpSampling2D(size=(2, 2))(img)\n    img = Conv2D(1, kernel_size=3, strides=1, padding='same')(img)\n    img = Activation('tanh')(img)\n    \n    return Model([z, label], img)\n\ngenerator = build_generator()\ngenerator.summary()\n","metadata":{"execution":{"iopub.status.busy":"2023-04-07T18:29:04.100396Z","iopub.execute_input":"2023-04-07T18:29:04.100773Z","iopub.status.idle":"2023-04-07T18:29:04.964557Z","shell.execute_reply.started":"2023-04-07T18:29:04.100739Z","shell.execute_reply":"2023-04-07T18:29:04.963011Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from keras.layers import Dropout, Concatenate\nimport numpy as np\n\ndef build_discriminator():\n    model = Sequential()\n    model.add(Conv2D(32, kernel_size = 3, strides = 2, input_shape = (512,512,2), padding = 'same'))\n    model.add(BatchNormalization())\n    model.add(LeakyReLU(alpha = 0.02))\n    model.add(Conv2D(64, kernel_size = 3, strides = 2, padding = 'same'))\n    model.add(BatchNormalization())\n    model.add(LeakyReLU(alpha = 0.02))\n    model.add(Conv2D(128, kernel_size = 3, strides = 2, padding = 'same'))\n    model.add(BatchNormalization())\n    model.add(LeakyReLU(alpha = 0.02))\n    model.add(Dropout(0.25))\n    model.add(Flatten())\n    model.add(Dense(1, activation = 'sigmoid'))\n    \n    img = Input(shape= (img_shape))\n    label = Input(shape= (1,), dtype = 'int32')\n    \n    label_embedding = Embedding(input_dim = num_classes, output_dim = np.prod(img_shape), input_length = 1)(label)\n    label_embedding = Flatten()(label_embedding)\n    label_embedding = Reshape(img_shape)(label_embedding)\n    \n    concat = Concatenate(axis = -1)([img, label_embedding])\n    prediction = model(concat)\n    return Model([img, label], prediction)\n\ndiscriminator = build_discriminator()\ndiscriminator.summary()","metadata":{"execution":{"iopub.status.busy":"2023-04-07T18:29:05.10066Z","iopub.execute_input":"2023-04-07T18:29:05.101084Z","iopub.status.idle":"2023-04-07T18:29:05.352319Z","shell.execute_reply.started":"2023-04-07T18:29:05.101048Z","shell.execute_reply":"2023-04-07T18:29:05.351173Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from keras.optimizers import Adam\n\ndiscriminator.compile(loss = 'binary_crossentropy', optimizer = Adam(0.0002, 0.5), metrics = ['accuracy'])\n\nz = Input(shape=(z_dim,))\nlabel = Input(shape= (1,))\nimg = generator([z,label])\n\ndiscriminator.trainable = False\nprediction = discriminator([img, label])\n\ncgan = Model([z, label], prediction)\ncgan.compile(loss= 'binary_crossentropy', optimizer = Adam(0.0002, 0.5))","metadata":{"execution":{"iopub.status.busy":"2023-04-07T18:29:21.681482Z","iopub.execute_input":"2023-04-07T18:29:21.681897Z","iopub.status.idle":"2023-04-07T18:29:21.856087Z","shell.execute_reply.started":"2023-04-07T18:29:21.681863Z","shell.execute_reply":"2023-04-07T18:29:21.854443Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def train(epochs, batch_size, save_interval):\n  \n    \n    X_train = (x_train - 127.5) / 127.5\n    X_train = np.expand_dims(X_train, axis=3)\n    \n    real = np.ones(shape=(batch_size, 1))\n    fake = np.zeros(shape=(batch_size, 1))\n    \n    for iteration in range(epochs):\n        \n        idx = np.random.randint(0, X_train.shape[0], batch_size)\n        imgs, labels = X_train[idx], y_train[idx]\n        \n        z = np.random.normal(0, 1, size=(batch_size, z_dim))\n        gen_imgs = generator.predict([z, labels])\n        \n        d_loss_real = discriminator.train_on_batch([imgs, labels], real)\n        d_loss_fake = discriminator.train_on_batch([gen_imgs, labels], fake)\n        d_loss = 0.5 * np.add(d_loss_real, d_loss_fake)\n        \n        z = np.random.normal(0, 1, size=(batch_size, z_dim))\n        labels = np.random.randint(0, num_classes, batch_size).reshape(-1, 1)\n        \n        g_loss = cgan.train_on_batch([z, labels], real)\n        \n        if iteration % save_interval == 0:\n            print('{} [D loss: {}, accuracy: {:.2f}] [G loss: {}]'.format(iteration, d_loss[0], 100 * d_loss[1], g_loss))\n            save_image(iteration)","metadata":{"execution":{"iopub.status.busy":"2023-04-07T18:29:35.0341Z","iopub.execute_input":"2023-04-07T18:29:35.034455Z","iopub.status.idle":"2023-04-07T18:29:35.046193Z","shell.execute_reply.started":"2023-04-07T18:29:35.034427Z","shell.execute_reply":"2023-04-07T18:29:35.044983Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train(500, 128, 10)","metadata":{"execution":{"iopub.status.busy":"2023-04-07T18:29:45.617647Z","iopub.execute_input":"2023-04-07T18:29:45.618046Z","iopub.status.idle":"2023-04-07T18:29:46.388378Z","shell.execute_reply.started":"2023-04-07T18:29:45.618011Z","shell.execute_reply":"2023-04-07T18:29:46.386262Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Due to Previous model failure i am trying a different approach ","metadata":{}},{"cell_type":"code","source":"import tensorflow as tf ","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:04:44.12495Z","iopub.execute_input":"2023-04-08T06:04:44.126085Z","iopub.status.idle":"2023-04-08T06:04:47.569865Z","shell.execute_reply.started":"2023-04-08T06:04:44.126035Z","shell.execute_reply":"2023-04-08T06:04:47.568426Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"learning_rate=0.0002\nbatch_size=128\nepochs =100\n\n#Network Parama\nimg_dim=262144\ny_dimension=27\ngen_hidd_dim=256\ndisc_hidd_dim=256\nz_noise_dim=100\n\ndef xavier_init(shape):\n    return tf.random.normal(shape=shape,stddev=1./tf.sqrt(shape[0]/2.0))","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:06:25.616851Z","iopub.execute_input":"2023-04-08T06:06:25.617271Z","iopub.status.idle":"2023-04-08T06:06:25.624194Z","shell.execute_reply.started":"2023-04-08T06:06:25.617233Z","shell.execute_reply":"2023-04-08T06:06:25.623036Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"weights={\"disc_H\":tf.Variable(xavier_init([img_dim+y_dimension,disc_hidd_dim])),\n        \"disc_final\":tf.Variable(xavier_init([disc_hidd_dim,1])),\n        \"gen_H\":tf.Variable(xavier_init([z_noise_dim+y_dimension,gen_hidd_dim])),\n        \"gen_final\":tf.Variable(xavier_init([gen_hidd_dim,img_dim]))}\n\nbias={\"disc_H\":tf.Variable(xavier_init([disc_hidd_dim])),\n        \"disc_final\":tf.Variable(xavier_init([1])),\n        \"gen_H\":tf.Variable(xavier_init([gen_hidd_dim])),\n        \"gen_final\":tf.Variable(xavier_init([img_dim]))}","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:06:27.429172Z","iopub.execute_input":"2023-04-08T06:06:27.429644Z","iopub.status.idle":"2023-04-08T06:06:29.066518Z","shell.execute_reply.started":"2023-04-08T06:06:27.429595Z","shell.execute_reply":"2023-04-08T06:06:29.065416Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nimport tensorflow as tf\nfrom tensorflow.keras import backend as K\nz_input = K.placeholder(dtype=tf.float32, shape=(None, z_noise_dim), name=\"input_noise\")\ny_input = K.placeholder(dtype=tf.float32, shape=(None, y_dimension), name=\"Labels\")\nx_input = K.placeholder(dtype=tf.float32, shape=(None, img_dim), name=\"real_input\")","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:06:32.269663Z","iopub.execute_input":"2023-04-08T06:06:32.270171Z","iopub.status.idle":"2023-04-08T06:06:32.287734Z","shell.execute_reply.started":"2023-04-08T06:06:32.270121Z","shell.execute_reply":"2023-04-08T06:06:32.286185Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def Discriminator(x,y):\n    inputs=tf.concat(axis=1,values=[x,y])\n    hidden_layer=tf.nn.relu(tf.add(tf.matmul(inputs,weights[\"disc_H\"]),bias[\"disc_H\"]))\n    final_layer=tf.add(tf.matmul(hidden_layer,weights[\"disc_final\"]),bias[\"disc_final\"])\n    disc_output=tf.nn.sigmoid(final_layer)\n    return final_layer,disc_output\n\ndef Generator(x,y):\n    inputs=tf.concat(axis=1,values=[x,y])\n    hidden_layer=tf.nn.relu(tf.add(tf.matmul(inputs,weights[\"gen_H\"]),bias[\"gen_H\"]))\n    final_layer=tf.add(tf.matmul(hidden_layer,weights[\"gen_final\"]),bias[\"gen_final\"])\n    return final_layer\n\noutput_Gen=Generator(z_input,y_input)\n\nreal_output1_Disc,real_output_Disc=Discriminator(x_input,y_input)\nfake_output1_disc,fake_output_Disc=Discriminator(output_Gen,y_input)","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:06:35.273404Z","iopub.execute_input":"2023-04-08T06:06:35.274257Z","iopub.status.idle":"2023-04-08T06:06:35.368838Z","shell.execute_reply.started":"2023-04-08T06:06:35.274208Z","shell.execute_reply":"2023-04-08T06:06:35.367646Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Discriminator_Loss=-tf.reduce_mean(tf.math.log(real_output_Disc+0.0001)+tf.math.log(1.-fake_output_Disc+0.0001))\nGenerator_Loss=-tf.reduce_mean(tf.math.log(fake_output_Disc+0.0001))\n\nDisc_loss_total=tf.summary.scalar(\"Disc_Total_loss\",Discriminator_Loss)\nGen_loss_total=tf.summary.scalar(\"Gen_Loss\",Generator_Loss)","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:18:06.392527Z","iopub.execute_input":"2023-04-08T06:18:06.393349Z","iopub.status.idle":"2023-04-08T06:18:06.458829Z","shell.execute_reply.started":"2023-04-08T06:18:06.393296Z","shell.execute_reply":"2023-04-08T06:18:06.457239Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import sys\nprint(sys.getrecursionlimit())","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:01:04.926203Z","iopub.execute_input":"2023-04-08T06:01:04.926756Z","iopub.status.idle":"2023-04-08T06:01:04.933616Z","shell.execute_reply.started":"2023-04-08T06:01:04.926704Z","shell.execute_reply":"2023-04-08T06:01:04.932216Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import sys\nprint(sys.setrecursionlimit(20000))","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:02:42.710932Z","iopub.execute_input":"2023-04-08T06:02:42.711345Z","iopub.status.idle":"2023-04-08T06:02:42.725866Z","shell.execute_reply.started":"2023-04-08T06:02:42.711301Z","shell.execute_reply":"2023-04-08T06:02:42.724408Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import tensorflow as tf\n\nGenerator_var=[weights[\"gen_H\"],weights[\"gen_final\"],bias[\"gen_H\"],bias[\"gen_final\"]]\nDiscriminator_var=[weights[\"disc_H\"],weights[\"disc_final\"],bias[\"disc_H\"],bias[\"disc_final\"]]\n\nDiscriminator_optimize=tf.keras.optimizers.Adam(learning_rate=learning_rate)\nGenerator_optimize=tf.keras.optimizers.Adam(learning_rate=learning_rate)\n","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:25:07.630189Z","iopub.execute_input":"2023-04-08T06:25:07.630645Z","iopub.status.idle":"2023-04-08T06:25:07.641531Z","shell.execute_reply.started":"2023-04-08T06:25:07.630603Z","shell.execute_reply":"2023-04-08T06:25:07.640248Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import tensorflow.compat.v1 as tf\ntf.disable_v2_behavior()\ninit = tf.compat.v1.global_variables_initializer()","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:25:20.287991Z","iopub.execute_input":"2023-04-08T06:25:20.288419Z","iopub.status.idle":"2023-04-08T06:25:20.296065Z","shell.execute_reply.started":"2023-04-08T06:25:20.288378Z","shell.execute_reply":"2023-04-08T06:25:20.2948Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sess = tf.Session()\nsess.run(init)\nwriter = tf.summary.FileWriter(\"./log\", sess.graph)\n\nfor epoch in range(epochs):\n    idx = np.random.randint(0, x_train.shape[0], batch_size)\n    X_batch,Y_label=x_train[idx],y_train[idx]\n    \n    Z_noise=np.random.uniform(-1.,1.,size=[batch_size,z_noise_dim])\n    _,Disc_loss_epoch=sess.run([Discriminator_optimize,Discriminator_Loss],feed_dict={x_input:X_batch,y_input:Y_label,z_input:Z_noise})\n    _,Gen_loss_epoch=sess.run([Generator_optimize,Generator_Loss],feed_dict={z_input:Z_noise,y_input:Y_label})\n    \n    summary_Disc_Loss=sess.run(Disc_loss_total,feed_dict={x_input:X_batch,z_input:Z_noise,y_input:Y_label})\n    writer.add_summary(summary_Disc_Loss,epoch)\n    \n    summary_Gen_Loss=sess.run(Gen_loss_total,feed_dict={z_input:Z_noise,y_input:Y_label})\n    writer.add_summary(summary_Gen_Loss,epoch)\n    \n    if epoch%10==0:\n        print(\"Steps :{0}:  Genrator Loss:{1},Discriminator Loss :{2}\".format(epoch,Gen_loss_epoch,Disc_loss_epoch))\n\nsess.close()","metadata":{"execution":{"iopub.status.busy":"2023-04-08T06:25:22.006145Z","iopub.execute_input":"2023-04-08T06:25:22.007794Z","iopub.status.idle":"2023-04-08T06:25:22.077221Z","shell.execute_reply.started":"2023-04-08T06:25:22.007713Z","shell.execute_reply":"2023-04-08T06:25:22.075043Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}