{"id":67054,"date":"2024-06-17T17:04:43","date_gmt":"2024-06-17T13:34:43","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/from-noise-to-art-building-your-first-generative-adversarial-network-472o\/"},"modified":"2024-06-17T17:04:43","modified_gmt":"2024-06-17T13:34:43","slug":"from-noise-to-art-building-your-first-generative-adversarial-network-472o","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/from-noise-to-art-building-your-first-generative-adversarial-network-472o\/","title":{"rendered":"\u0627\u0632 \u0646\u0648\u06cc\u0632 \u062a\u0627 \u0647\u0646\u0631: \u0633\u0627\u062e\u062a\u0646 \u0627\u0648\u0644\u06cc\u0646 \u0634\u0628\u06a9\u0647 \u0645\u062a\u062e\u0627\u0635\u0645 \u0645\u0648\u0644\u062f \u0634\u0645\u0627"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u0645\u0646 \u0628\u0627 \u0627\u06cc\u0646 \u0627\u06cc\u062f\u0647 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0645\u0627\u0634\u06cc\u0646\u06cc \u0628\u0627\u0634\u06a9\u0648\u0647 \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0634\u0628\u06a9\u0647\u200c\u0647\u0627\u06cc \u0645\u062a\u062e\u0627\u0635\u0645 \u0645\u0648\u0644\u062f (GAN) \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u062f\u0631 \u062d\u0648\u0632\u0647 \u062a\u0648\u0644\u06cc\u062f \u062a\u0635\u0648\u06cc\u0631 \u0622\u0634\u0646\u0627 \u0634\u062f\u0645.  \u0686\u0627\u0631\u0686\u0648\u0628 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0647 \u0646\u0627\u0645 GANs \u062a\u0648\u0633\u0637 \u0627\u06cc\u0627\u0646 \u06af\u0648\u062f\u0641\u0644\u0648 \u062f\u0631 \u0633\u0627\u0644 2014 \u062a\u0648\u0633\u0639\u0647 \u06cc\u0627\u0641\u062a.  \u0645\u0639\u0645\u0627\u0631\u06cc \u0632\u06cc\u0631\u0628\u0646\u0627\u06cc\u06cc \u0622\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0642\u0627\u0628\u062a \u062f\u0648 \u0634\u0628\u06a9\u0647 \u0639\u0635\u0628\u06cc \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0648\u0633\u0639\u062a \u0627\u06cc\u0646 \u0648\u0628\u0644\u0627\u06af\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0646\u0645 GAN \u0686\u06cc\u0633\u062a\u060c \u0648 \u0633\u067e\u0633 \u0628\u0647 \u0634\u0645\u0627 \u0628\u06af\u0648\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0648\u0628\u0644\u0627\u06af \u0627\u0632 \u062c\u0645\u0644\u0647 \u06a9\u062f \u0645\u0648\u062c\u0648\u062f \u062f\u0631 TensorFlow \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u0622\u0645\u0648\u0632\u0634 \u06cc\u06a9 GAN \u0633\u0627\u062f\u0647\u060c \u0686\u0647 \u06a9\u0627\u0631 \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f.<\/p>\n<p>GAN \u0686\u06cc\u0633\u062a\u061f\u062f\u0631 \u0647\u0633\u062a\u0647 \u062e\u0648\u062f\u060c \u06cc\u06a9 GAN \u0627\u0632 \u062f\u0648 \u0634\u0628\u06a9\u0647 \u0639\u0635\u0628\u06cc \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a: \u0627\u0644\u0628\u062a\u0647\u060c \u0645\u0648\u0644\u062f \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062c\u0639\u0644\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0648 \u062a\u0645\u0627\u06cc\u0632 \u062f\u0647\u0646\u062f\u0647 \u0627\u06cc \u06a9\u0647 \u06cc\u0627\u062f \u0645\u06cc \u06af\u06cc\u0631\u062f \u0686\u06af\u0648\u0646\u0647 \u0628\u06cc\u0646 \u0686\u06cc\u0632\u0647\u0627\u06cc \u062c\u0639\u0644\u06cc \u0648 \u0648\u0627\u0642\u0639\u06cc \u062a\u0645\u0627\u06cc\u0632 \u0642\u0627\u0626\u0644 \u0634\u0648\u062f. <\/p>\n<p>Generator: \u067e\u0633 \u0627\u0632 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u0646\u0648\u06cc\u0632 \u0648 \u0633\u067e\u0633 \u0639\u0628\u0648\u0631 \u062f\u0627\u062f\u0646 \u0622\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06cc\u06a9 \u062f\u0627\u062f\u0647 \u062e\u0631\u0648\u062c\u06cc \u06a9\u0647 \u0634\u0628\u06cc\u0647 \u0627\u0644\u06af\u0648\u06cc \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0627\u0633\u062a.<br \/>\n\u062a\u0641\u06a9\u06cc\u06a9 \u06a9\u0646\u0646\u062f\u0647: \u062a\u0645\u0627\u06cc\u0632 \u06a9\u0646\u0646\u062f\u0647 \u0628\u0647 \u06a9\u0627\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u062f\u0631 \u062a\u0648\u0635\u06cc\u0641 \u0627\u06cc\u0646 \u0645\u062f\u0644 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0648\u0631\u0648\u062f\u06cc \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u0633\u0639\u06cc \u0645\u06cc \u06a9\u0646\u062f \u062d\u062f\u0633 \u0628\u0632\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u06cc\u0627 \u0641\u0642\u0637 \u0628\u0627 \u06a9\u0645\u06a9 \u0698\u0646\u0631\u0627\u062a\u0648\u0631 \u0633\u0646\u062a\u0632 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0648 \u0634\u0628\u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0647\u0645\u0632\u0645\u0627\u0646 \u062f\u0631 \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u0628\u0627\u0632\u06cc \u062d\u0627\u0635\u0644 \u062c\u0645\u0639 \u0635\u0641\u0631 \u0622\u0645\u0648\u0632\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f: \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u062f\u0631 GAN \u0647\u0627\u060c \u0634\u0628\u06a9\u0647 \u0645\u0648\u0644\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0628\u0647 \u0634\u0628\u06a9\u0647 \u0645\u062a\u0645\u0627\u06cc\u0632 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0622\u0646 \u0631\u0627 \u0641\u0631\u06cc\u0628 \u062f\u0647\u062f \u062a\u0627 \u0628\u0627\u0648\u0631 \u06a9\u0646\u062f \u06a9\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0647 \u0622\u0646 \u0648\u0627\u0642\u0639\u06cc \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0627\u0632 \u0637\u0631\u0641 \u062f\u06cc\u06af\u0631\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062a\u0645\u0627\u06cc\u0632 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a. \u0634\u0628\u06a9\u0647 \u0646\u0642\u0634 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0627\u0632 \u062c\u0639\u0644\u06cc \u0631\u0627 \u062f\u0627\u0631\u062f. <\/p>\n<p>\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u06cc\u06a9 GAN \u0633\u0627\u062f\u0647<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 1: \u062a\u0646\u0638\u06cc\u0645 \u0645\u062d\u06cc\u0637<\/p>\n<p>pip install tensorflow<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 2: \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0636\u0631\u0648\u0631\u06cc<\/p>\n<p>import tensorflow as tf<br \/>\nfrom tensorflow.keras import layers<br \/>\nimport numpy as np<br \/>\nimport matplotlib.pyplot as plt<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 3: \u0698\u0646\u0631\u0627\u062a\u0648\u0631 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0634\u0628\u06a9\u0647 \u0645\u0648\u0644\u062f \u0633\u067e\u0633 \u06cc\u06a9 \u0628\u0631\u062f\u0627\u0631 \u0646\u0648\u06cc\u0632 \u0628\u0647 \u0637\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0646\u0642\u0637\u0647 \u062f\u0627\u062f\u0647 \u06a9\u0647 \u0634\u0628\u06cc\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0648\u0627\u0642\u0639\u06cc \u0627\u0633\u062a\u060c \u062a\u0631\u0633\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>def build_generator():<br \/>\n    model = tf.keras.Sequential()<br \/>\n    model.add(layers.Dense(8*8*128, use_bias=False, input_shape=(100,)))<br \/>\n    model.add(layers.BatchNormalization())<br \/>\n    model.add(layers.LeakyReLU())<br \/>\n    model.add(layers.Reshape((8, 8, 128)))<br \/>\n    assert model.output_shape == (None, 8, 8, 128)  # Note: None is the batch size<\/p>\n<p>    model.add(layers.Conv2DTranspose(128, (5, 5), strides=(1, 1), padding=&#8217;same&#8217;, use_bias=False))<br \/>\n    assert model.output_shape == (None, 8, 8, 128)<br \/>\n    model.add(layers.BatchNormalization())<br \/>\n    model.add(layers.LeakyReLU())<\/p>\n<p>    model.add(layers.Conv2DTranspose(128, (5, 5), strides=(2, 2), padding=&#8217;same&#8217;, use_bias=False))<br \/>\n    model.add(layers.BatchNormalization())<br \/>\n    model.add(layers.LeakyReLU())<br \/>\n    assert model.output_shape == (None, 16, 16, 128)<\/p>\n<p>    model.add(layers.Conv2DTranspose(128, (5, 5), strides=(2, 2), padding=&#8217;same&#8217;, use_bias=False))<br \/>\n    model.add(layers.BatchNormalization())<br \/>\n    model.add(layers.LeakyReLU())<br \/>\n    assert model.output_shape == (None, 32, 32, 128)<\/p>\n<p>    model.add(layers.Conv2DTranspose(128, (5, 5), strides=(2, 2), padding=&#8217;same&#8217;, use_bias=False))<br \/>\n    model.add(layers.BatchNormalization())<br \/>\n    model.add(layers.LeakyReLU())<br \/>\n    assert model.output_shape == (None, 64, 64, 128)<\/p>\n<p>    model.add(layers.Conv2DTranspose(3, (5, 5), strides=(2, 2), padding=&#8217;same&#8217;, use_bias=False, activation=&#8217;tanh&#8217;))<br \/>\n    print(model.output_shape)<\/p>\n<p>    return model<\/p>\n<p>generator = build_generator()<br \/>\ngenerator.summary()<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 4: \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u0646\u062f\u0647 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0634\u0628\u06a9\u0647 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u0646\u062f\u0647 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0648\u0627\u0642\u0639\u06cc \u0637\u0628\u0642\u0647 \u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u062f<\/p>\n<p>def build_discriminator():<br \/>\n    model = tf.keras.Sequential()<br \/>\n    model.add(layers.Conv2D(64, (5, 5), strides=(2, 2), padding=&#8217;same&#8217;,<br \/>\n                                     input_shape=[128, 128, 3]))<br \/>\n    model.add(layers.LeakyReLU())<br \/>\n    model.add(layers.Dropout(0.3))<\/p>\n<p>    model.add(layers.Conv2D(128, (5, 5), strides=(2, 2), padding=&#8217;same&#8217;))<br \/>\n    model.add(layers.LeakyReLU())<br \/>\n    model.add(layers.Dropout(0.3))<\/p>\n<p>    model.add(layers.Conv2D(256, (5, 5), strides=(2, 2), padding=&#8217;same&#8217;))<br \/>\n    model.add(layers.LeakyReLU())<br \/>\n    model.add(layers.Dropout(0.3))<\/p>\n<p>    model.add(layers.Flatten())<br \/>\n    model.add(layers.Dense(1))<br \/>\n    return model<\/p>\n<p>discriminator = build_discriminator()<br \/>\ndiscriminator.summary()<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 5: \u0645\u062f\u0644 \u0647\u0627 \u0631\u0627 \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f<\/p>\n<p>noise = tf.random.normal([1,100])<br \/>\ngenerated_image = generator(noise,training=False)<br \/>\nprint(discriminator(generated_image))<br \/>\nplt.imshow(generated_image[0]*127.5+127.5)<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 6: \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0627\u0632 \u062f\u0633\u062a \u062f\u0627\u062f\u0646 \u0648 \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632<\/p>\n<p>cross_entropy=BinaryCrossentropy(from_logits=True)<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>def discriminator_loss(real_output,fake_output):<br \/>\n  real_loss = cross_entropy(tf.ones_like(real_output),real_output)<br \/>\n  fake_loss = cross_entropy(tf.zeros_like(fake_output),fake_output)<br \/>\n  total_loss = real_loss + fake_loss<br \/>\n  return total_loss<\/p>\n<p>def generator_loss(fake_output):<br \/>\n  return cross_entropy(tf.ones_like(fake_output),fake_output)<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>generator_optimizer = tf.keras.optimizers.Adam(1e-4)<br \/>\ndiscriminator_optimizer = tf.keras.optimizers.Adam(1e-4)<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 7: \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u06cc\u0633\u062a \u0628\u0627\u0632\u0631\u0633\u06cc<\/p>\n<p>checkpoint_dir=&#8221;training_checkpoints&#8221;<br \/>\ncheckpoint_prefix = os.path.join(checkpoint_dir,&#8217;ckpt&#8217;)<br \/>\ncheckpoint = tf.train.Checkpoint(generator_optimizer=generator_optimizer,<br \/>\n                                 discriminator_optimizer=discriminator_optimizer,<br \/>\n                                 generator=generator,<br \/>\n                                 discriminator=discriminator)<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 8: \u062a\u0639\u0631\u06cc\u0641 \u0645\u0631\u062d\u0644\u0647 \u0642\u0637\u0627\u0631<\/p>\n<p>@tf.function<br \/>\ndef train_step(images):<\/p>\n<p>    noise=tf.random.normal([batch_size,noise_dims])<\/p>\n<p>    with tf.GradientTape() as gen_tape, tf.GradientTape() as dis_tape:<br \/>\n        generated_images=generator(noise,training=True)<\/p>\n<p>        real_output=discriminator(images,training=True)<br \/>\n        fake_output=discriminator(generated_images,training=True)<\/p>\n<p>        gen_loss=generator_loss(fake_output)<br \/>\n        disc_loss=discriminator_loss(real_output,fake_output)<\/p>\n<p>    gen_gradients=gen_tape.gradient(gen_loss,generator.trainable_variables)<br \/>\n    dis_gradients=dis_tape.gradient(disc_loss,discriminator.trainable_variables)<\/p>\n<p>    generator_optimizer.apply_gradients(zip(gen_gradients,generator.trainable_variables))<br \/>\n    discriminator_optimizer.apply_gradients(zip(dis_gradients,discriminator.trainable_variables))<\/p>\n<p>    return gen_loss,disc_loss<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 9: \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u062d\u0644\u0642\u0647 \u0622\u0645\u0648\u0632\u0634\u06cc \u0648 \u0630\u062e\u06cc\u0631\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647<\/p>\n<p>from IPython import display<br \/>\nimport time<\/p>\n<p>total_gloss=[]\ntotal_dloss=[]\ndef train(dataset,epochs):<br \/>\n    for epoch in range(epochs):<br \/>\n        disc_loss=gen_loss=0<br \/>\n        start=time.time()<br \/>\n        count=0<br \/>\n        for batch in dataset:<br \/>\n            losses=train_step(batch)<br \/>\n            count+=1<br \/>\n            disc_loss+=losses[1]\n            gen_loss+=losses[0]\n        total_gloss.append(gen_loss.numpy())<br \/>\n        total_dloss.append(disc_loss.numpy())<\/p>\n<p>        if (epoch+1)%50==0:<br \/>\n            checkpoint.save(file_prefix=checkpoint_prefix)<br \/>\n            display.clear_output(wait=True)<br \/>\n            generate_and_save_output(generator,epoch+1,seed)<\/p>\n<p>        print(f&#8217;Time for epoch {epoch + 1} is {time.time()-start}&#8217;)<br \/>\n        print(f&#8217;Gloss: {gen_loss.numpy()\/count} , Dloss: {disc_loss.numpy()\/count}&#8217;,end=&#8217;\\n\\n&#8217;)<br \/>\n    display.clear_output(wait=True)<br \/>\n    generate_and_save_output(generator,epochs,seed)<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>def generate_and_save_output(model,epoch,test_input):<\/p>\n<p>      predictions = model(test_input,training=False)<br \/>\n      fig = plt.figure(figsize=(4,4))<br \/>\n      for i in range(predictions.shape[0]):<br \/>\n        plt.subplot(4,4,i+1)<br \/>\n        plt.imshow((predictions[i]*127.5+127.5).numpy().astype(np.uint8),cmap=&#8217;gray&#8217;)<br \/>\n        plt.axis(&#8216;off&#8217;)<br \/>\n      plt.savefig(f&#8217;image_at_epoch_{epoch}.png&#8217;)<br \/>\n      plt.show()<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 10: GAN \u0631\u0627 \u0622\u0645\u0648\u0632\u0634 \u062f\u0647\u06cc\u062f<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f GAN \u062e\u0648\u062f \u0631\u0627 \u0622\u0645\u0648\u0632\u0634 \u062f\u0647\u06cc\u0645\u060c \u0645\u0646 \u0627\u0632 \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0633\u06af \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0627\u0645\u060c \u06a9\u0647 \u062f\u0631 \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u0627\u062f\u0647 \u0633\u06af \u0627\u0633\u062a\u0627\u0646\u0641\u0648\u0631\u062f Kaggle \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a<\/p>\n<p>EPOCHS = 500<br \/>\nnoise_dims = 100<br \/>\nnum_egs_to_generate = 16<br \/>\nseed = tf.random.normal([num_egs_to_generate,noise_dims])<\/p>\n<p>train(train_images,EPOCHS)<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062a\u0648\u062c\u0647: \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0627 \u06a9\u06cc\u0641\u06cc\u062a \u062e\u0648\u0628\u060c \u0645\u062f\u0644 \u0628\u0647 \u062a\u0639\u062f\u0627\u062f \u0632\u06cc\u0627\u062f\u06cc \u062f\u0648\u0631\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f.<\/p>\n<p>\u062f\u0631 \u062d\u0627\u0644 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0631\u062f\u0646 \u0645\u062f\u0644 \u0645\u0627:<\/p>\n<p>new_image = generator(tf.random.normal([1,100]),training=False)<br \/>\nplt.imshow((new_image[0]*127.5+127.5).numpy().astype(np.uint8))<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0646\u062a\u06cc\u062c\u0647GAN \u0647\u0627 \u062f\u0631 \u062a\u0648\u0644\u06cc\u062f \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0645\u0641\u06cc\u062f \u0647\u0633\u062a\u0646\u062f \u0632\u06cc\u0631\u0627 \u0622\u0646\u0647\u0627 \u0646\u0648\u0639\u06cc \u0634\u0628\u06a9\u0647 \u0639\u0635\u0628\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0628\u0631\u0686\u0633\u0628 \u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u06cc\u0627\u062f \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f \u0648 \u0633\u067e\u0633 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0646\u062f.  \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627\u060c \u0641\u0631\u0645\u0648\u0644 \u0628\u0646\u062f\u06cc \u06cc\u06a9 GAN \u0645\u0639\u0642\u0648\u0644 \u0631\u0648\u0634\u0646 \u0648 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u0648 \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0634\u0647\u0648\u062f \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0631\u06cc\u062a\u0645 \u0646\u0633\u0628\u06cc \u0628\u06cc\u0646 \u062d\u0631\u06a9\u0627\u062a \u0645\u0648\u0644\u062f \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u0646\u062f\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.  \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0647\u062f\u0641 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06a9\u0646\u0648\u0646\u06cc \u0631\u0627 \u06a9\u0647 \u0635\u0631\u0641\u0627\u064b \u062e\u0648\u0627\u0646\u0646\u062f\u0647 \u0631\u0627 \u0628\u0627 \u0645\u0648\u0636\u0648\u0639 GAN \u0622\u0634\u0646\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0627\u0632 \u0622\u0646\u0686\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0648\u0632\u0647 \u062a\u062d\u0642\u06cc\u0642\u0627\u062a\u06cc \u0631\u0648 \u0628\u0647 \u0631\u0634\u062f \u0627\u0645\u06a9\u0627\u0646\u200c\u067e\u0630\u06cc\u0631 \u0627\u0633\u062a\u060c \u0628\u0647 \u0622\u0646\u0647\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. <\/p>\n<p>\u0645\u0646\u0627\u0628\u0639:\u0645\u0642\u0627\u0644\u0647 \u0627\u0635\u0644\u06cc \u06cc\u0627\u0646 \u06af\u0648\u062f\u0641\u0644\u0648\u0645\u0633\u062a\u0646\u062f\u0627\u062a TensorFlow\u0645\u062e\u0632\u0646 Github \u0645\u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0648\u0627\u0644\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u0628\u067e\u0631\u0633\u06cc\u062f \u06cc\u0627 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc GAN \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631\u0627\u062a \u0632\u06cc\u0631 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f!<\/p>\n<div data-article-id=\"1891212\" id=\"article-body\">\n<p>\u0645\u0646 \u0628\u0627 \u0627\u06cc\u0646 \u0627\u06cc\u062f\u0647 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0645\u0627\u0634\u06cc\u0646\u06cc \u0628\u0627\u0634\u06a9\u0648\u0647 \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0634\u0628\u06a9\u0647\u200c\u0647\u0627\u06cc \u0645\u062a\u062e\u0627\u0635\u0645 \u0645\u0648\u0644\u062f (GAN) \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u062f\u0631 \u062d\u0648\u0632\u0647 \u062a\u0648\u0644\u06cc\u062f \u062a\u0635\u0648\u06cc\u0631 \u0622\u0634\u0646\u0627 \u0634\u062f\u0645.  \u0686\u0627\u0631\u0686\u0648\u0628 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0647 \u0646\u0627\u0645 GANs \u062a\u0648\u0633\u0637 \u0627\u06cc\u0627\u0646 \u06af\u0648\u062f\u0641\u0644\u0648 \u062f\u0631 \u0633\u0627\u0644 2014 \u062a\u0648\u0633\u0639\u0647 \u06cc\u0627\u0641\u062a.  \u0645\u0639\u0645\u0627\u0631\u06cc \u0632\u06cc\u0631\u0628\u0646\u0627\u06cc\u06cc \u0622\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0642\u0627\u0628\u062a \u062f\u0648 \u0634\u0628\u06a9\u0647 \u0639\u0635\u0628\u06cc \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0648\u0633\u0639\u062a \u0627\u06cc\u0646 \u0648\u0628\u0644\u0627\u06af\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0646\u0645 GAN \u0686\u06cc\u0633\u062a\u060c \u0648 \u0633\u067e\u0633 \u0628\u0647 \u0634\u0645\u0627 \u0628\u06af\u0648\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0648\u0628\u0644\u0627\u06af \u0627\u0632 \u062c\u0645\u0644\u0647 \u06a9\u062f \u0645\u0648\u062c\u0648\u062f \u062f\u0631 TensorFlow \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u0622\u0645\u0648\u0632\u0634 \u06cc\u06a9 GAN \u0633\u0627\u062f\u0647\u060c \u0686\u0647 \u06a9\u0627\u0631 \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f.<\/p>\n<p><\/p>\n<p><strong>GAN \u0686\u06cc\u0633\u062a\u061f<\/strong><br \/>\u062f\u0631 \u0647\u0633\u062a\u0647 \u062e\u0648\u062f\u060c \u06cc\u06a9 GAN \u0627\u0632 \u062f\u0648 \u0634\u0628\u06a9\u0647 \u0639\u0635\u0628\u06cc \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a: \u0627\u0644\u0628\u062a\u0647\u060c \u0645\u0648\u0644\u062f \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062c\u0639\u0644\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0648 \u062a\u0645\u0627\u06cc\u0632 \u062f\u0647\u0646\u062f\u0647 \u0627\u06cc \u06a9\u0647 \u06cc\u0627\u062f \u0645\u06cc \u06af\u06cc\u0631\u062f \u0686\u06af\u0648\u0646\u0647 \u0628\u06cc\u0646 \u0686\u06cc\u0632\u0647\u0627\u06cc \u062c\u0639\u0644\u06cc \u0648 \u0648\u0627\u0642\u0639\u06cc \u062a\u0645\u0627\u06cc\u0632 \u0642\u0627\u0626\u0644 \u0634\u0648\u062f. <\/p>\n<ul>\n<li>Generator: \u067e\u0633 \u0627\u0632 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u0646\u0648\u06cc\u0632 \u0648 \u0633\u067e\u0633 \u0639\u0628\u0648\u0631 \u062f\u0627\u062f\u0646 \u0622\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06cc\u06a9 \u062f\u0627\u062f\u0647 \u062e\u0631\u0648\u062c\u06cc \u06a9\u0647 \u0634\u0628\u06cc\u0647 \u0627\u0644\u06af\u0648\u06cc \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0627\u0633\u062a. <\/li>\n<li>\u062a\u0641\u06a9\u06cc\u06a9 \u06a9\u0646\u0646\u062f\u0647: \u062a\u0645\u0627\u06cc\u0632 \u06a9\u0646\u0646\u062f\u0647 \u0628\u0647 \u06a9\u0627\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u062f\u0631 \u062a\u0648\u0635\u06cc\u0641 \u0627\u06cc\u0646 \u0645\u062f\u0644 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0648\u0631\u0648\u062f\u06cc \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u0633\u0639\u06cc \u0645\u06cc \u06a9\u0646\u062f \u062d\u062f\u0633 \u0628\u0632\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u06cc\u0627 \u0641\u0642\u0637 \u0628\u0627 \u06a9\u0645\u06a9 \u0698\u0646\u0631\u0627\u062a\u0648\u0631 \u0633\u0646\u062a\u0632 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<\/ul>\n<p>\u0627\u06cc\u0646 \u062f\u0648 \u0634\u0628\u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0647\u0645\u0632\u0645\u0627\u0646 \u062f\u0631 \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u0628\u0627\u0632\u06cc \u062d\u0627\u0635\u0644 \u062c\u0645\u0639 \u0635\u0641\u0631 \u0622\u0645\u0648\u0632\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f: \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u062f\u0631 GAN \u0647\u0627\u060c \u0634\u0628\u06a9\u0647 \u0645\u0648\u0644\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0628\u0647 \u0634\u0628\u06a9\u0647 \u0645\u062a\u0645\u0627\u06cc\u0632 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0622\u0646 \u0631\u0627 \u0641\u0631\u06cc\u0628 \u062f\u0647\u062f \u062a\u0627 \u0628\u0627\u0648\u0631 \u06a9\u0646\u062f \u06a9\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0647 \u0622\u0646 \u0648\u0627\u0642\u0639\u06cc \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0627\u0632 \u0637\u0631\u0641 \u062f\u06cc\u06af\u0631\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062a\u0645\u0627\u06cc\u0632 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a. \u0634\u0628\u06a9\u0647 \u0646\u0642\u0634 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0627\u0632 \u062c\u0639\u0644\u06cc \u0631\u0627 \u062f\u0627\u0631\u062f. <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0v4kkhn0e8r2l53dszq.png\" alt=\"\u0645\u062b\u0627\u0644\" loading=\"lazy\" width=\"800\" height=\"516\" title=\"\"><\/p>\n<p><strong>\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06af\u0627\u0645 \u0628\u0647 \u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u06cc\u06a9 GAN \u0633\u0627\u062f\u0647<\/strong><\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 1: \u062a\u0646\u0638\u06cc\u0645 \u0645\u062d\u06cc\u0637<\/p>\n<p><code>pip install tensorflow<\/code><\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 2: \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0636\u0631\u0648\u0631\u06cc<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>import tensorflow as tf\nfrom tensorflow.keras import layers\nimport numpy as np\nimport matplotlib.pyplot as plt\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0631\u062d\u0644\u0647 3: \u0698\u0646\u0631\u0627\u062a\u0648\u0631 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0634\u0628\u06a9\u0647 \u0645\u0648\u0644\u062f \u0633\u067e\u0633 \u06cc\u06a9 \u0628\u0631\u062f\u0627\u0631 \u0646\u0648\u06cc\u0632 \u0628\u0647 \u0637\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0646\u0642\u0637\u0647 \u062f\u0627\u062f\u0647 \u06a9\u0647 \u0634\u0628\u06cc\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0648\u0627\u0642\u0639\u06cc \u0627\u0633\u062a\u060c \u062a\u0631\u0633\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>def build_generator():\n    model = tf.keras.Sequential()\n    model.add(layers.Dense(8*8*128, use_bias=False, input_shape=(100,)))\n    model.add(layers.BatchNormalization())\n    model.add(layers.LeakyReLU())\n    model.add(layers.Reshape((8, 8, 128)))\n    assert model.output_shape == (None, 8, 8, 128)  # Note: None is the batch size\n\n    model.add(layers.Conv2DTranspose(128, (5, 5), strides=(1, 1), padding='same', use_bias=False))\n    assert model.output_shape == (None, 8, 8, 128)\n    model.add(layers.BatchNormalization())\n    model.add(layers.LeakyReLU())\n\n    model.add(layers.Conv2DTranspose(128, (5, 5), strides=(2, 2), padding='same', use_bias=False))\n    model.add(layers.BatchNormalization())\n    model.add(layers.LeakyReLU())\n    assert model.output_shape == (None, 16, 16, 128)\n\n    model.add(layers.Conv2DTranspose(128, (5, 5), strides=(2, 2), padding='same', use_bias=False))\n    model.add(layers.BatchNormalization())\n    model.add(layers.LeakyReLU())\n    assert model.output_shape == (None, 32, 32, 128)\n\n    model.add(layers.Conv2DTranspose(128, (5, 5), strides=(2, 2), padding='same', use_bias=False))\n    model.add(layers.BatchNormalization())\n    model.add(layers.LeakyReLU())\n    assert model.output_shape == (None, 64, 64, 128)\n\n    model.add(layers.Conv2DTranspose(3, (5, 5), strides=(2, 2), padding='same', use_bias=False, activation='tanh'))\n    print(model.output_shape)\n\n    return model\n\ngenerator = build_generator()\ngenerator.summary()\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0631\u062d\u0644\u0647 4: \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u0646\u062f\u0647 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0634\u0628\u06a9\u0647 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u0646\u062f\u0647 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0648\u0627\u0642\u0639\u06cc \u0637\u0628\u0642\u0647 \u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>def build_discriminator():\n    model = tf.keras.Sequential()\n    model.add(layers.Conv2D(64, (5, 5), strides=(2, 2), padding='same',\n                                     input_shape=[128, 128, 3]))\n    model.add(layers.LeakyReLU())\n    model.add(layers.Dropout(0.3))\n\n    model.add(layers.Conv2D(128, (5, 5), strides=(2, 2), padding='same'))\n    model.add(layers.LeakyReLU())\n    model.add(layers.Dropout(0.3))\n\n    model.add(layers.Conv2D(256, (5, 5), strides=(2, 2), padding='same'))\n    model.add(layers.LeakyReLU())\n    model.add(layers.Dropout(0.3))\n\n    model.add(layers.Flatten())\n    model.add(layers.Dense(1))\n    return model\n\ndiscriminator = build_discriminator()\ndiscriminator.summary()\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0631\u062d\u0644\u0647 5: \u0645\u062f\u0644 \u0647\u0627 \u0631\u0627 \u062a\u0633\u062a \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>noise = tf.random.normal([1,100])\ngenerated_image = generator(noise,training=False)\nprint(discriminator(generated_image))\nplt.imshow(generated_image[0]*127.5+127.5)\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0631\u062d\u0644\u0647 6: \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0627\u0632 \u062f\u0633\u062a \u062f\u0627\u062f\u0646 \u0648 \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>cross_entropy=BinaryCrossentropy(from_logits=True)\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>def discriminator_loss(real_output,fake_output):\n  real_loss = cross_entropy(tf.ones_like(real_output),real_output)\n  fake_loss = cross_entropy(tf.zeros_like(fake_output),fake_output)\n  total_loss = real_loss + fake_loss\n  return total_loss\n\ndef generator_loss(fake_output):\n  return cross_entropy(tf.ones_like(fake_output),fake_output)\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>generator_optimizer = tf.keras.optimizers.Adam(1e-4)\ndiscriminator_optimizer = tf.keras.optimizers.Adam(1e-4)\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0631\u062d\u0644\u0647 7: \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u06cc\u0633\u062a \u0628\u0627\u0632\u0631\u0633\u06cc<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>checkpoint_dir=\"training_checkpoints\"\ncheckpoint_prefix = os.path.join(checkpoint_dir,'ckpt')\ncheckpoint = tf.train.Checkpoint(generator_optimizer=generator_optimizer,\n                                 discriminator_optimizer=discriminator_optimizer,\n                                 generator=generator,\n                                 discriminator=discriminator)\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0631\u062d\u0644\u0647 8: \u062a\u0639\u0631\u06cc\u0641 \u0645\u0631\u062d\u0644\u0647 \u0642\u0637\u0627\u0631<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>@tf.function\ndef train_step(images):\n\n    noise=tf.random.normal([batch_size,noise_dims])\n\n    with tf.GradientTape() as gen_tape, tf.GradientTape() as dis_tape:\n        generated_images=generator(noise,training=True)\n\n        real_output=discriminator(images,training=True)\n        fake_output=discriminator(generated_images,training=True)\n\n        gen_loss=generator_loss(fake_output)\n        disc_loss=discriminator_loss(real_output,fake_output)\n\n    gen_gradients=gen_tape.gradient(gen_loss,generator.trainable_variables)\n    dis_gradients=dis_tape.gradient(disc_loss,discriminator.trainable_variables)\n\n    generator_optimizer.apply_gradients(zip(gen_gradients,generator.trainable_variables))\n    discriminator_optimizer.apply_gradients(zip(dis_gradients,discriminator.trainable_variables))\n\n    return gen_loss,disc_loss\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0631\u062d\u0644\u0647 9: \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u062d\u0644\u0642\u0647 \u0622\u0645\u0648\u0632\u0634\u06cc \u0648 \u0630\u062e\u06cc\u0631\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>from IPython import display\nimport time\n\ntotal_gloss=[]\ntotal_dloss=[]\ndef train(dataset,epochs):\n    for epoch in range(epochs):\n        disc_loss=gen_loss=0\n        start=time.time()\n        count=0\n        for batch in dataset:\n            losses=train_step(batch)\n            count+=1\n            disc_loss+=losses[1]\n            gen_loss+=losses[0]\n        total_gloss.append(gen_loss.numpy())\n        total_dloss.append(disc_loss.numpy())\n\n        if (epoch+1)%50==0:\n            checkpoint.save(file_prefix=checkpoint_prefix)\n            display.clear_output(wait=True)\n            generate_and_save_output(generator,epoch+1,seed)\n\n        print(f'Time for epoch {epoch + 1} is {time.time()-start}')\n        print(f'Gloss: {gen_loss.numpy()\/count} , Dloss: {disc_loss.numpy()\/count}',end='\\n\\n')\n    display.clear_output(wait=True)\n    generate_and_save_output(generator,epochs,seed)\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>def generate_and_save_output(model,epoch,test_input):\n\n      predictions = model(test_input,training=False)\n      fig = plt.figure(figsize=(4,4))\n      for i in range(predictions.shape[0]):\n        plt.subplot(4,4,i+1)\n        plt.imshow((predictions[i]*127.5+127.5).numpy().astype(np.uint8),cmap='gray')\n        plt.axis('off')\n      plt.savefig(f'image_at_epoch_{epoch}.png')\n      plt.show()\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0631\u062d\u0644\u0647 10: GAN \u0631\u0627 \u0622\u0645\u0648\u0632\u0634 \u062f\u0647\u06cc\u062f<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f GAN \u062e\u0648\u062f \u0631\u0627 \u0622\u0645\u0648\u0632\u0634 \u062f\u0647\u06cc\u0645\u060c \u0645\u0646 \u0627\u0632 \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0633\u06af \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0627\u0645\u060c \u06a9\u0647 \u062f\u0631 \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u0627\u062f\u0647 \u0633\u06af \u0627\u0633\u062a\u0627\u0646\u0641\u0648\u0631\u062f Kaggle \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>EPOCHS = 500\nnoise_dims = 100\nnum_egs_to_generate = 16\nseed = tf.random.normal([num_egs_to_generate,noise_dims])\n\ntrain(train_images,EPOCHS)\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><em>\u062a\u0648\u062c\u0647: \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0627 \u06a9\u06cc\u0641\u06cc\u062a \u062e\u0648\u0628\u060c \u0645\u062f\u0644 \u0628\u0647 \u062a\u0639\u062f\u0627\u062f \u0632\u06cc\u0627\u062f\u06cc \u062f\u0648\u0631\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f.<\/em><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwctawbgiawgclxx1ud3d.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631 \u062f\u0631 \u0639\u0635\u0631 500\" loading=\"lazy\" width=\"400\" height=\"400\" title=\"\"><\/p>\n<p>\u062f\u0631 \u062d\u0627\u0644 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0631\u062f\u0646 \u0645\u062f\u0644 \u0645\u0627:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>new_image = generator(tf.random.normal([1,100]),training=False)\nplt.imshow((new_image[0]*127.5+127.5).numpy().astype(np.uint8))\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftbith61tukcjnrcf2g44.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647\" loading=\"lazy\" width=\"464\" height=\"455\" title=\"\"><\/p>\n<p><strong>\u0646\u062a\u06cc\u062c\u0647<\/strong><br \/>GAN \u0647\u0627 \u062f\u0631 \u062a\u0648\u0644\u06cc\u062f \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0645\u0641\u06cc\u062f \u0647\u0633\u062a\u0646\u062f \u0632\u06cc\u0631\u0627 \u0622\u0646\u0647\u0627 \u0646\u0648\u0639\u06cc \u0634\u0628\u06a9\u0647 \u0639\u0635\u0628\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0622\u0645\u0648\u0632\u0634\u06cc \u0628\u0631\u0686\u0633\u0628 \u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u06cc\u0627\u062f \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f \u0648 \u0633\u067e\u0633 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0646\u062f.  \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627\u060c \u0641\u0631\u0645\u0648\u0644 \u0628\u0646\u062f\u06cc \u06cc\u06a9 GAN \u0645\u0639\u0642\u0648\u0644 \u0631\u0648\u0634\u0646 \u0648 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u0648 \u0627\u0632 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0634\u0647\u0648\u062f \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0631\u06cc\u062a\u0645 \u0646\u0633\u0628\u06cc \u0628\u06cc\u0646 \u062d\u0631\u06a9\u0627\u062a \u0645\u0648\u0644\u062f \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u0646\u062f\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.  \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0647\u062f\u0641 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06a9\u0646\u0648\u0646\u06cc \u0631\u0627 \u06a9\u0647 \u0635\u0631\u0641\u0627\u064b \u062e\u0648\u0627\u0646\u0646\u062f\u0647 \u0631\u0627 \u0628\u0627 \u0645\u0648\u0636\u0648\u0639 GAN \u0622\u0634\u0646\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0627\u0632 \u0622\u0646\u0686\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0648\u0632\u0647 \u062a\u062d\u0642\u06cc\u0642\u0627\u062a\u06cc \u0631\u0648 \u0628\u0647 \u0631\u0634\u062f \u0627\u0645\u06a9\u0627\u0646\u200c\u067e\u0630\u06cc\u0631 \u0627\u0633\u062a\u060c \u0628\u0647 \u0622\u0646\u0647\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. <\/p>\n<p><strong>\u0645\u0646\u0627\u0628\u0639:<\/strong><br \/>\u0645\u0642\u0627\u0644\u0647 \u0627\u0635\u0644\u06cc \u06cc\u0627\u0646 \u06af\u0648\u062f\u0641\u0644\u0648<br \/>\u0645\u0633\u062a\u0646\u062f\u0627\u062a TensorFlow<br \/>\u0645\u062e\u0632\u0646 Github \u0645\u0646<br \/>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0648\u0627\u0644\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u0628\u067e\u0631\u0633\u06cc\u062f \u06cc\u0627 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc GAN \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631\u0627\u062a \u0632\u06cc\u0631 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f!<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0645\u0646 \u0628\u0627 \u0627\u06cc\u0646 \u0627\u06cc\u062f\u0647 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0645\u0627\u0634\u06cc\u0646\u06cc \u0628\u0627\u0634\u06a9\u0648\u0647 \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0634\u0628\u06a9\u0647\u200c\u0647\u0627\u06cc \u0645\u062a\u062e\u0627\u0635\u0645 \u0645\u0648\u0644\u062f (GAN) \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u062f\u0631 \u062d\u0648\u0632\u0647 \u062a\u0648\u0644\u06cc\u062f \u062a\u0635\u0648\u06cc\u0631 \u0622\u0634\u0646\u0627 \u0634\u062f\u0645. \u0686\u0627\u0631\u0686\u0648\u0628 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0647 \u0646\u0627\u0645 GANs \u062a\u0648\u0633\u0637 \u0627\u06cc\u0627\u0646 \u06af\u0648\u062f\u0641\u0644\u0648 \u062f\u0631 \u0633\u0627\u0644 2014 \u062a\u0648\u0633\u0639\u0647 \u06cc\u0627\u0641\u062a. \u0645\u0639\u0645\u0627\u0631\u06cc \u0632\u06cc\u0631\u0628\u0646\u0627\u06cc\u06cc \u0622\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0642\u0627\u0628\u062a \u062f\u0648 \u0634\u0628\u06a9\u0647 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":67055,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-67054","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/67054","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=67054"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/67054\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/67055"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=67054"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=67054"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=67054"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}