{"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":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport gc\nimport time","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-06-09T09:16:41.116135Z","iopub.execute_input":"2023-06-09T09:16:41.116558Z","iopub.status.idle":"2023-06-09T09:16:41.828552Z","shell.execute_reply.started":"2023-06-09T09:16:41.116517Z","shell.execute_reply":"2023-06-09T09:16:41.826342Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from IPython import display","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:16:41.835253Z","iopub.execute_input":"2023-06-09T09:16:41.835777Z","iopub.status.idle":"2023-06-09T09:16:41.845928Z","shell.execute_reply.started":"2023-06-09T09:16:41.835738Z","shell.execute_reply":"2023-06-09T09:16:41.844624Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import tensorflow as tf\nimport tensorflow.keras.backend as K\n","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:16:41.847414Z","iopub.execute_input":"2023-06-09T09:16:41.848147Z","iopub.status.idle":"2023-06-09T09:16:50.161299Z","shell.execute_reply.started":"2023-06-09T09:16:41.848108Z","shell.execute_reply":"2023-06-09T09:16:50.160171Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tensorflow.keras import layers\nfrom tensorflow.keras import Model\nfrom tensorflow.keras.models import Sequential","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:16:50.163683Z","iopub.execute_input":"2023-06-09T09:16:50.164281Z","iopub.status.idle":"2023-06-09T09:16:50.171745Z","shell.execute_reply.started":"2023-06-09T09:16:50.164254Z","shell.execute_reply":"2023-06-09T09:16:50.169151Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"path = \"/kaggle/input/happy-whale-and-dolphin/train.csv\"\ntrain_df = pd.read_csv(path)","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:16:50.174554Z","iopub.execute_input":"2023-06-09T09:16:50.175214Z","iopub.status.idle":"2023-06-09T09:16:50.285915Z","shell.execute_reply.started":"2023-06-09T09:16:50.175182Z","shell.execute_reply":"2023-06-09T09:16:50.284980Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df.groupby(\"species\").count().sort_values(\"image\", ascending = False).head()","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:16:50.287284Z","iopub.execute_input":"2023-06-09T09:16:50.287614Z","iopub.status.idle":"2023-06-09T09:16:50.345660Z","shell.execute_reply.started":"2023-06-09T09:16:50.287584Z","shell.execute_reply":"2023-06-09T09:16:50.344620Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dolphin = \"bottlenose_dolphin\"\n\nfilter1 = train_df[\"species\"] == dolphin\n\ntrain_indx =  np.where(filter1)[0]","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:16:50.347393Z","iopub.execute_input":"2023-06-09T09:16:50.347835Z","iopub.status.idle":"2023-06-09T09:16:50.361176Z","shell.execute_reply.started":"2023-06-09T09:16:50.347801Z","shell.execute_reply":"2023-06-09T09:16:50.360196Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"np.random.seed(1)\nnp.random.shuffle(train_indx)","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:16:50.363010Z","iopub.execute_input":"2023-06-09T09:16:50.363512Z","iopub.status.idle":"2023-06-09T09:16:50.370802Z","shell.execute_reply.started":"2023-06-09T09:16:50.363480Z","shell.execute_reply":"2023-06-09T09:16:50.369891Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#n_train = 50000\n#np.random.seed(1)\n#train_indx = np.random.choice(n_train, 17000)","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:16:50.372100Z","iopub.execute_input":"2023-06-09T09:16:50.372791Z","iopub.status.idle":"2023-06-09T09:16:50.380469Z","shell.execute_reply.started":"2023-06-09T09:16:50.372758Z","shell.execute_reply":"2023-06-09T09:16:50.379583Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train = np.load(\"/kaggle/input/happywhale-images/Img_train_96x128.npy\")[train_indx,16:-16,:,:]","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:16:50.385208Z","iopub.execute_input":"2023-06-09T09:16:50.385476Z","iopub.status.idle":"2023-06-09T09:17:01.790541Z","shell.execute_reply.started":"2023-06-09T09:16:50.385438Z","shell.execute_reply":"2023-06-09T09:17:01.789580Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train.shape","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:01.792046Z","iopub.execute_input":"2023-06-09T09:17:01.792370Z","iopub.status.idle":"2023-06-09T09:17:01.799373Z","shell.execute_reply.started":"2023-06-09T09:17:01.792338Z","shell.execute_reply":"2023-06-09T09:17:01.798528Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig, ax = plt.subplots(4,4, figsize = (10, 8))\n\nfor k in range(16):\n    i = int(k//4)\n    j = k % 4\n    ax[i,j].imshow(X_train[k])\n    ax[i,j].tick_params(left = False, right = False , labelleft = False ,\n                labelbottom = False, bottom = False)\n","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:01.801077Z","iopub.execute_input":"2023-06-09T09:17:01.801781Z","iopub.status.idle":"2023-06-09T09:17:04.384130Z","shell.execute_reply.started":"2023-06-09T09:17:01.801749Z","shell.execute_reply":"2023-06-09T09:17:04.383279Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig, ax = plt.subplots(4,4, figsize = (10, 8))\n\nfor k in range(16):\n    i = int(k//4)\n    j = k % 4\n    ax[i,j].imshow(X_train[k+100])\n    ax[i,j].tick_params(left = False, right = False , labelleft = False ,\n                labelbottom = False, bottom = False)\n","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:04.385106Z","iopub.execute_input":"2023-06-09T09:17:04.385414Z","iopub.status.idle":"2023-06-09T09:17:07.345739Z","shell.execute_reply.started":"2023-06-09T09:17:04.385387Z","shell.execute_reply":"2023-06-09T09:17:07.344712Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train = X_train.astype(np.float32) / (255/2) - 1","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:07.347409Z","iopub.execute_input":"2023-06-09T09:17:07.347756Z","iopub.status.idle":"2023-06-09T09:17:07.757979Z","shell.execute_reply.started":"2023-06-09T09:17:07.347727Z","shell.execute_reply":"2023-06-09T09:17:07.757013Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"batch_size = 64\ndataset = tf.data.Dataset.from_tensor_slices(X_train).shuffle(1000)\ndataset = dataset.batch(batch_size, drop_remainder=True).prefetch(1)","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:07.759333Z","iopub.execute_input":"2023-06-09T09:17:07.760414Z","iopub.status.idle":"2023-06-09T09:17:12.487881Z","shell.execute_reply.started":"2023-06-09T09:17:07.760381Z","shell.execute_reply":"2023-06-09T09:17:12.486925Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gc.collect()","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:12.489251Z","iopub.execute_input":"2023-06-09T09:17:12.489698Z","iopub.status.idle":"2023-06-09T09:17:12.744338Z","shell.execute_reply.started":"2023-06-09T09:17:12.489666Z","shell.execute_reply":"2023-06-09T09:17:12.743247Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Generator","metadata":{}},{"cell_type":"code","source":"def create_generator6():\n    \n    Input =  layers.Input(shape=(random_normal_dim))\n    \n    #x = layers.Dropout(0.25)(Input)\n    \n    FS = 256*2\n    x = layers.Dense(random_normal_dim*FS)(Input)\n    \n    \n    x = layers.Reshape((4,8,FS))(x)\n    \n    x = layers.Dropout(0.4)(x)\n    \n    FS = int(FS//2)\n    x = layers.Conv2DTranspose(FS, kernel_size=5, strides=2, padding=\"SAME\", activation=\"selu\")(x)\n    x = layers.BatchNormalization()(x)\n    \n    \n    FS = int(FS//2)\n    x = layers.Conv2DTranspose(FS, kernel_size=7, strides=2, padding=\"SAME\", activation=\"selu\")(x)\n    x = layers.BatchNormalization()(x)\n    \n    FS = int(FS//2)\n    x = layers.Conv2DTranspose(FS, kernel_size=7, strides=2, padding=\"SAME\", activation=\"selu\")(x)\n    x = layers.BatchNormalization()(x)\n    \n    output = layers.Conv2DTranspose(3, kernel_size=7, strides=2, padding=\"SAME\", activation=\"tanh\")(x)\n    \n    \n    \n    model = Model(inputs = Input, outputs = output)\n    \n    return model","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:12.745971Z","iopub.execute_input":"2023-06-09T09:17:12.746363Z","iopub.status.idle":"2023-06-09T09:17:12.758823Z","shell.execute_reply.started":"2023-06-09T09:17:12.746330Z","shell.execute_reply":"2023-06-09T09:17:12.757913Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"random_normal_dim = 32\n\n\ngenerator = create_generator6()\ngenerator.summary()","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:18:01.697350Z","iopub.execute_input":"2023-06-09T09:18:01.697730Z","iopub.status.idle":"2023-06-09T09:18:01.845821Z","shell.execute_reply.started":"2023-06-09T09:18:01.697700Z","shell.execute_reply":"2023-06-09T09:18:01.845070Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Discriminator","metadata":{}},{"cell_type":"code","source":"def create_discriminator():\n    \n    Input = layers.Input(shape = (64, 128, 3))\n    \n    FS = 32*2\n    x = layers.Conv2D(FS, kernel_size =7, strides = 2, padding = \"same\")(Input)\n    x = layers.BatchNormalization()(x)\n    x = layers.LeakyReLU(0.2)(x)\n    \n\n    \n    FS = FS*2\n    x = layers.Conv2D(FS, kernel_size =7, strides = 2, padding = \"same\")(x)\n    x = layers.BatchNormalization()(x)\n    x = layers.LeakyReLU(0.2)(x)\n        \n\n    \n    FS = FS*2\n    x = layers.Conv2D(FS, kernel_size =7, strides = 2, padding = \"same\")(x)\n    x = layers.BatchNormalization()(x)\n    x = layers.LeakyReLU(0.2)(x)\n    \n    \n    FS = FS*2\n    x = layers.Conv2D(FS, kernel_size =5, strides = 2, padding = \"same\", activation = layers.LeakyReLU(0.2))(x)\n    \n    # Additional\n    #FS = FS*2\n    #x = layers.Conv2D(FS, kernel_size =3, strides = 1, padding = \"valid\", activation = layers.LeakyReLU(0.2))(x)\n    #x = layers.AveragePooling2D(pool_size=(2, 2), strides=2)(x)\n    \n    x = layers.Flatten()(x)\n    \n    x = layers.Dropout(0.2)(x)\n    \n    output = layers.Dense(1, activation = \"sigmoid\")(x)\n    \n    model =  Model(inputs = Input, outputs = output)\n    \n    return model\n    ","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:18:02.149559Z","iopub.execute_input":"2023-06-09T09:18:02.149928Z","iopub.status.idle":"2023-06-09T09:18:02.160588Z","shell.execute_reply.started":"2023-06-09T09:18:02.149898Z","shell.execute_reply":"2023-06-09T09:18:02.159568Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"discriminator = create_discriminator()\ndiscriminator.summary()","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:18:02.323617Z","iopub.execute_input":"2023-06-09T09:18:02.324370Z","iopub.status.idle":"2023-06-09T09:18:02.466246Z","shell.execute_reply.started":"2023-06-09T09:18:02.324334Z","shell.execute_reply":"2023-06-09T09:18:02.465513Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# GAN","metadata":{}},{"cell_type":"code","source":"gan = Sequential([generator, discriminator])","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:18:02.626904Z","iopub.execute_input":"2023-06-09T09:18:02.627297Z","iopub.status.idle":"2023-06-09T09:18:02.746218Z","shell.execute_reply.started":"2023-06-09T09:18:02.627265Z","shell.execute_reply":"2023-06-09T09:18:02.745288Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"0.0005*0.95**10","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:18:02.786070Z","iopub.execute_input":"2023-06-09T09:18:02.786390Z","iopub.status.idle":"2023-06-09T09:18:02.793993Z","shell.execute_reply.started":"2023-06-09T09:18:02.786363Z","shell.execute_reply":"2023-06-09T09:18:02.793178Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"LR = 0.0005\nDS = int(X_train.shape[0]/64)\n\nprint(DS)\n\n\n\ndiscriminator.compile(loss=\"binary_crossentropy\", \n                      optimizer= tf.keras.optimizers.experimental.RMSprop(\n                          learning_rate=tf.keras.optimizers.schedules.ExponentialDecay(\n                            initial_learning_rate=LR,\n                            decay_steps= DS,\n                            decay_rate=0.95)\n                      )\n          \n                     )\n\n\ndiscriminator.trainable = False\n\n\n\ngan.compile(loss=\"binary_crossentropy\", \n                      optimizer= tf.keras.optimizers.experimental.RMSprop(\n                          learning_rate=tf.keras.optimizers.schedules.ExponentialDecay(\n                            initial_learning_rate=LR,\n                            decay_steps= DS,\n                            decay_rate=0.95)\n                      )\n           )","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:18:02.962123Z","iopub.execute_input":"2023-06-09T09:18:02.962474Z","iopub.status.idle":"2023-06-09T09:18:02.988792Z","shell.execute_reply.started":"2023-06-09T09:18:02.962445Z","shell.execute_reply":"2023-06-09T09:18:02.987858Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Train GAN","metadata":{}},{"cell_type":"markdown","source":"**Train Loop**","metadata":{}},{"cell_type":"code","source":"def train_gan(EPOCH):\n    \n    \n    \n    disc_labels = tf.constant([[0.]]*batch_size + [[1.]]*batch_size)\n    gan_labels = tf.constant([[1.]]*batch_size)\n\n\n    for ITR in range(EPOCH):\n        time1 = time.time()\n        \n        print(\"EPOCH\", ITR)\n        count = 0\n        for real_images in dataset:\n            count += 1\n\n            #generate images\n            random_noise = tf.random.normal(shape = (batch_size, random_normal_dim))\n            fake_images = generator(random_noise)\n\n            all_images = tf.concat([fake_images, real_images], axis = 0)\n\n            #train discriminator\n            discriminator.trainable = True\n            discriminator.train_on_batch(all_images, disc_labels)\n\n\n            #train generator\n            discriminator.trainable = False\n\n            #random_noise = tf.random.normal(shape = (batch_size, random_normal_dim))\n\n            gan.train_on_batch(random_noise, gan_labels)\n\n            #if count % 300 == 0:\n            #    print(count)\n    \n        time2 = time.time()\n        time3 = np.round(time2 - time1)\n        print(time3, \"sec\")","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:18:03.606266Z","iopub.execute_input":"2023-06-09T09:18:03.606930Z","iopub.status.idle":"2023-06-09T09:18:03.615593Z","shell.execute_reply.started":"2023-06-09T09:18:03.606898Z","shell.execute_reply":"2023-06-09T09:18:03.614538Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Plot Function**","metadata":{}},{"cell_type":"code","source":"def plot_results(images):\n    #display.clear_output(wait=True)  \n    \n    N = 16\n    \n    NC = 4\n    NR = int(N//NC)\n    \n    img2 = ((np.array(images).copy() + 1)*127.5)\n    \n    img2[img2>255] = 255\n    img2[img2<0] = 0\n    img2 = img2.astype(np.uint8)\n    \n    fig, ax = plt.subplots(NR,NC, figsize = (12,8))\n    \n    for k in range(N):\n        i = int(k//NC)\n        j = k % NC\n        \n        ax[i,j].imshow(img2[k])\n        ax[i,j].tick_params(left = False, right = False , labelleft = False ,\n                labelbottom = False, bottom = False)\n        \n    #return img2","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:18:04.055149Z","iopub.execute_input":"2023-06-09T09:18:04.055502Z","iopub.status.idle":"2023-06-09T09:18:04.063773Z","shell.execute_reply.started":"2023-06-09T09:18:04.055473Z","shell.execute_reply":"2023-06-09T09:18:04.062624Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def convert_img(images):\n    \n    img2 = ((np.array(images).copy() + 1)*127.5)\n    \n    img2[img2>255] = 255\n    img2[img2<0] = 0\n    img2 = img2.astype(np.uint8)\n    \n    return img2","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:18:04.491403Z","iopub.execute_input":"2023-06-09T09:18:04.491807Z","iopub.status.idle":"2023-06-09T09:18:04.497900Z","shell.execute_reply.started":"2023-06-09T09:18:04.491773Z","shell.execute_reply":"2023-06-09T09:18:04.496487Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Generated Images","metadata":{}},{"cell_type":"code","source":"EPOCH = 3","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:18:06.576125Z","iopub.execute_input":"2023-06-09T09:18:06.576477Z","iopub.status.idle":"2023-06-09T09:18:06.582298Z","shell.execute_reply.started":"2023-06-09T09:18:06.576450Z","shell.execute_reply":"2023-06-09T09:18:06.581406Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_gan(EPOCH)\nrandom_noise = tf.random.normal(shape = (16, random_normal_dim))\nfake_images = generator(random_noise)\nplot_results(fake_images)","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:18:07.107314Z","iopub.execute_input":"2023-06-09T09:18:07.107998Z","iopub.status.idle":"2023-06-09T09:19:33.090360Z","shell.execute_reply.started":"2023-06-09T09:18:07.107965Z","shell.execute_reply":"2023-06-09T09:19:33.088850Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_gan(EPOCH)\nrandom_noise = tf.random.normal(shape = (16, random_normal_dim))\nfake_images = generator(random_noise)\nplot_results(fake_images)","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:19:33.092072Z","iopub.execute_input":"2023-06-09T09:19:33.098843Z","iopub.status.idle":"2023-06-09T09:20:54.889818Z","shell.execute_reply.started":"2023-06-09T09:19:33.098815Z","shell.execute_reply":"2023-06-09T09:20:54.888775Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_gan(EPOCH)\nrandom_noise = tf.random.normal(shape = (16, random_normal_dim))\nfake_images = generator(random_noise)\nplot_results(fake_images)","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:20:54.891168Z","iopub.execute_input":"2023-06-09T09:20:54.891577Z","iopub.status.idle":"2023-06-09T09:22:15.346772Z","shell.execute_reply.started":"2023-06-09T09:20:54.891545Z","shell.execute_reply":"2023-06-09T09:22:15.345699Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_gan(EPOCH)\nrandom_noise = tf.random.normal(shape = (16, random_normal_dim))\nfake_images = generator(random_noise)\nplot_results(fake_images)","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:22:15.348784Z","iopub.execute_input":"2023-06-09T09:22:15.349181Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"EPOCH = 3","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.968848Z","iopub.status.idle":"2023-06-09T09:17:27.969533Z","shell.execute_reply.started":"2023-06-09T09:17:27.969300Z","shell.execute_reply":"2023-06-09T09:17:27.969322Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_gan(EPOCH)\nrandom_noise = tf.random.normal(shape = (16, random_normal_dim))\nfake_images = generator(random_noise)\nplot_results(fake_images)\n","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.970734Z","iopub.status.idle":"2023-06-09T09:17:27.971393Z","shell.execute_reply.started":"2023-06-09T09:17:27.971145Z","shell.execute_reply":"2023-06-09T09:17:27.971167Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"random_noise = tf.random.normal(shape = (100, random_normal_dim))\nfake_images = generator(random_noise)\nfake_images_np = convert_img(fake_images)\n\nnp.save(\"fake_images1\", fake_images_np)\n","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.972605Z","iopub.status.idle":"2023-06-09T09:17:27.973297Z","shell.execute_reply.started":"2023-06-09T09:17:27.973054Z","shell.execute_reply":"2023-06-09T09:17:27.973077Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_gan(EPOCH)\nrandom_noise = tf.random.normal(shape = (16, random_normal_dim))\nfake_images = generator(random_noise)\nplot_results(fake_images)\n","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.974473Z","iopub.status.idle":"2023-06-09T09:17:27.975141Z","shell.execute_reply.started":"2023-06-09T09:17:27.974904Z","shell.execute_reply":"2023-06-09T09:17:27.974925Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"random_noise = tf.random.normal(shape = (200, random_normal_dim))\nfake_images = generator(random_noise)\nfake_images_np = convert_img(fake_images)\n\nnp.save(\"fake_images2\", fake_images_np)\n","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.976368Z","iopub.status.idle":"2023-06-09T09:17:27.977044Z","shell.execute_reply.started":"2023-06-09T09:17:27.976813Z","shell.execute_reply":"2023-06-09T09:17:27.976835Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_gan(EPOCH)\nrandom_noise = tf.random.normal(shape = (16, random_normal_dim))\nfake_images = generator(random_noise)\nplot_results(fake_images)","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.978250Z","iopub.status.idle":"2023-06-09T09:17:27.978912Z","shell.execute_reply.started":"2023-06-09T09:17:27.978675Z","shell.execute_reply":"2023-06-09T09:17:27.978698Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"random_noise = tf.random.normal(shape = (100, random_normal_dim))\nfake_images = generator(random_noise)\nfake_images_np = convert_img(fake_images)\n\nnp.save(\"fake_images3\", fake_images_np)\n","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.980116Z","iopub.status.idle":"2023-06-09T09:17:27.980802Z","shell.execute_reply.started":"2023-06-09T09:17:27.980554Z","shell.execute_reply":"2023-06-09T09:17:27.980576Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_gan(EPOCH)\nrandom_noise = tf.random.normal(shape = (16, random_normal_dim))\nfake_images = generator(random_noise)\nplot_results(fake_images)","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.981967Z","iopub.status.idle":"2023-06-09T09:17:27.982673Z","shell.execute_reply.started":"2023-06-09T09:17:27.982406Z","shell.execute_reply":"2023-06-09T09:17:27.982429Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"random_noise = tf.random.normal(shape = (200, random_normal_dim))\nfake_images = generator(random_noise)\nfake_images_np = convert_img(fake_images)\n\nnp.save(\"fake_images4\", fake_images_np)\n","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.983966Z","iopub.status.idle":"2023-06-09T09:17:27.984681Z","shell.execute_reply.started":"2023-06-09T09:17:27.984433Z","shell.execute_reply":"2023-06-09T09:17:27.984455Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_gan(EPOCH)\nrandom_noise = tf.random.normal(shape = (16, random_normal_dim))\nfake_images = generator(random_noise)\nplot_results(fake_images)\n","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.985893Z","iopub.status.idle":"2023-06-09T09:17:27.986562Z","shell.execute_reply.started":"2023-06-09T09:17:27.986331Z","shell.execute_reply":"2023-06-09T09:17:27.986354Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"random_noise = tf.random.normal(shape = (200, random_normal_dim))\nfake_images = generator(random_noise)\nfake_images_np = convert_img(fake_images)\n\nnp.save(\"fake_images5\", fake_images_np)","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.987745Z","iopub.status.idle":"2023-06-09T09:17:27.988410Z","shell.execute_reply.started":"2023-06-09T09:17:27.988173Z","shell.execute_reply":"2023-06-09T09:17:27.988206Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_gan(EPOCH)\nrandom_noise = tf.random.normal(shape = (16, random_normal_dim))\nfake_images = generator(random_noise)\nplot_results(fake_images)\n","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.989580Z","iopub.status.idle":"2023-06-09T09:17:27.990248Z","shell.execute_reply.started":"2023-06-09T09:17:27.990010Z","shell.execute_reply":"2023-06-09T09:17:27.990032Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"random_noise = tf.random.normal(shape = (200, random_normal_dim))\nfake_images = generator(random_noise)\nfake_images_np = convert_img(fake_images)\n\nnp.save(\"fake_images6\", fake_images_np)\n","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.991441Z","iopub.status.idle":"2023-06-09T09:17:27.992157Z","shell.execute_reply.started":"2023-06-09T09:17:27.991912Z","shell.execute_reply":"2023-06-09T09:17:27.991936Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_gan(EPOCH)\nrandom_noise = tf.random.normal(shape = (16, random_normal_dim))\nfake_images = generator(random_noise)\nplot_results(fake_images)\n","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.993409Z","iopub.status.idle":"2023-06-09T09:17:27.994108Z","shell.execute_reply.started":"2023-06-09T09:17:27.993860Z","shell.execute_reply":"2023-06-09T09:17:27.993883Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"random_noise = tf.random.normal(shape = (200, random_normal_dim))\nfake_images = generator(random_noise)\nfake_images_np = convert_img(fake_images)\n\nnp.save(\"fake_images7\", fake_images_np)\n","metadata":{"execution":{"iopub.status.busy":"2023-06-09T09:17:27.995355Z","iopub.status.idle":"2023-06-09T09:17:27.996067Z","shell.execute_reply.started":"2023-06-09T09:17:27.995821Z","shell.execute_reply":"2023-06-09T09:17:27.995844Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}