mlx-examples/gan/playground.ipynb

2091 lines
2.7 MiB
Plaintext
Raw Normal View History

2024-07-26 21:07:40 +08:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Import Library"
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 701,
2024-07-26 21:07:40 +08:00
"metadata": {},
"outputs": [],
"source": [
"import mnist"
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 702,
2024-07-26 21:07:40 +08:00
"metadata": {},
"outputs": [],
"source": [
"import mlx.core as mx\n",
"import mlx.nn as nn\n",
"import mlx.optimizers as optim\n",
"\n",
"from tqdm import tqdm\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
2024-07-30 07:17:12 +08:00
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 703,
2024-07-30 07:17:12 +08:00
"metadata": {},
"outputs": [],
"source": [
"# mx.set_default_device(mx.gpu)"
]
},
2024-07-26 21:07:40 +08:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# GAN Architecture"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generator 👨🏻‍🎨"
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 704,
2024-07-26 21:07:40 +08:00
"metadata": {},
"outputs": [],
"source": [
"def GenBlock(in_dim:int,out_dim:int):\n",
" \n",
" return nn.Sequential(\n",
" nn.Linear(in_dim,out_dim),\n",
2024-07-30 07:06:52 +08:00
" nn.BatchNorm(out_dim, 0.8),\n",
" nn.LeakyReLU(0.2)\n",
2024-07-26 21:07:40 +08:00
" )"
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 705,
2024-07-26 21:07:40 +08:00
"metadata": {},
"outputs": [],
"source": [
"class Generator(nn.Module):\n",
"\n",
2024-07-30 07:06:52 +08:00
" def __init__(self, z_dim:int = 10, im_dim:int = 784, hidden_dim: int = 256):\n",
2024-07-26 21:07:40 +08:00
" super(Generator, self).__init__()\n",
" # Build the neural network\n",
" self.gen = nn.Sequential(\n",
" GenBlock(z_dim, hidden_dim),\n",
" GenBlock(hidden_dim, hidden_dim * 2),\n",
" GenBlock(hidden_dim * 2, hidden_dim * 4),\n",
"\n",
2024-07-30 07:56:13 +08:00
" nn.Linear(hidden_dim * 4,im_dim),\n",
2024-07-26 21:07:40 +08:00
" )\n",
" \n",
" def __call__(self, noise):\n",
2024-07-30 07:06:52 +08:00
" x = self.gen(noise)\n",
" return mx.tanh(x)"
2024-07-26 21:07:40 +08:00
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 706,
2024-07-26 21:07:40 +08:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Generator(\n",
" (gen): Sequential(\n",
" (layers.0): Sequential(\n",
2024-07-30 07:06:52 +08:00
" (layers.0): Linear(input_dims=100, output_dims=256, bias=True)\n",
" (layers.1): BatchNorm(256, eps=0.8, momentum=0.1, affine=True, track_running_stats=True)\n",
" (layers.2): LeakyReLU()\n",
2024-07-26 21:07:40 +08:00
" )\n",
" (layers.1): Sequential(\n",
2024-07-30 07:06:52 +08:00
" (layers.0): Linear(input_dims=256, output_dims=512, bias=True)\n",
" (layers.1): BatchNorm(512, eps=0.8, momentum=0.1, affine=True, track_running_stats=True)\n",
" (layers.2): LeakyReLU()\n",
2024-07-26 21:07:40 +08:00
" )\n",
" (layers.2): Sequential(\n",
2024-07-30 07:06:52 +08:00
" (layers.0): Linear(input_dims=512, output_dims=1024, bias=True)\n",
" (layers.1): BatchNorm(1024, eps=0.8, momentum=0.1, affine=True, track_running_stats=True)\n",
" (layers.2): LeakyReLU()\n",
2024-07-26 21:07:40 +08:00
" )\n",
2024-07-30 07:56:13 +08:00
" (layers.3): Linear(input_dims=1024, output_dims=784, bias=True)\n",
2024-07-26 21:07:40 +08:00
" )\n",
")"
]
},
2024-07-30 07:56:13 +08:00
"execution_count": 706,
2024-07-26 21:07:40 +08:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gen = Generator(100)\n",
"gen"
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 707,
2024-07-26 21:07:40 +08:00
"metadata": {},
"outputs": [],
"source": [
2024-07-30 00:44:16 +08:00
"# make 2D noise with shape n_samples x z_dim\n",
"def get_noise(n_samples:list[int], z_dim:int)->list[int]:\n",
" return mx.random.normal(shape=(n_samples, z_dim))"
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 708,
2024-07-30 00:44:16 +08:00
"metadata": {},
"outputs": [
{
"data": {
2024-07-30 07:56:13 +08:00
"image/png": "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
2024-07-30 00:44:16 +08:00
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"img = get_noise(28,28)\n",
"plt.imshow(img, cmap='gray')\n",
"plt.axis('off')\n",
"plt.show()"
2024-07-26 21:07:40 +08:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Discriminator 🕵🏻‍♂️"
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 709,
2024-07-26 21:07:40 +08:00
"metadata": {},
"outputs": [],
"source": [
"def DisBlock(in_dim:int,out_dim:int):\n",
" return nn.Sequential(\n",
" nn.Linear(in_dim,out_dim),\n",
2024-07-30 00:44:16 +08:00
" nn.LeakyReLU(negative_slope=0.2),\n",
2024-07-26 21:07:40 +08:00
" )"
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 710,
2024-07-26 21:07:40 +08:00
"metadata": {},
"outputs": [],
"source": [
"class Discriminator(nn.Module):\n",
"\n",
2024-07-30 07:37:09 +08:00
" def __init__(self,im_dim:int = 784, hidden_dim:int = 256):\n",
2024-07-26 21:07:40 +08:00
" super(Discriminator, self).__init__()\n",
"\n",
" self.disc = nn.Sequential(\n",
2024-07-30 07:37:09 +08:00
" DisBlock(im_dim, hidden_dim * 4),\n",
" DisBlock(hidden_dim * 4, hidden_dim * 2),\n",
2024-07-26 21:07:40 +08:00
" DisBlock(hidden_dim * 2, hidden_dim),\n",
2024-07-30 07:37:09 +08:00
" \n",
" nn.Dropout(0.3),\n",
2024-07-26 21:07:40 +08:00
" nn.Linear(hidden_dim,1),\n",
2024-07-30 07:37:09 +08:00
" # nn.Sigmoid()\n",
2024-07-26 21:07:40 +08:00
" )\n",
" \n",
" def __call__(self, noise):\n",
2024-07-30 07:37:09 +08:00
" x = noise + 1.0\n",
" x = self.disc(noise)\n",
" out = mx.log(mx.softmax(x)) \n",
" return out"
2024-07-26 21:07:40 +08:00
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 711,
2024-07-26 21:07:40 +08:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Discriminator(\n",
" (disc): Sequential(\n",
" (layers.0): Sequential(\n",
2024-07-30 07:37:09 +08:00
" (layers.0): Linear(input_dims=784, output_dims=1024, bias=True)\n",
2024-07-26 21:07:40 +08:00
" (layers.1): LeakyReLU()\n",
" )\n",
" (layers.1): Sequential(\n",
2024-07-30 07:37:09 +08:00
" (layers.0): Linear(input_dims=1024, output_dims=512, bias=True)\n",
" (layers.1): LeakyReLU()\n",
" )\n",
" (layers.2): Sequential(\n",
" (layers.0): Linear(input_dims=512, output_dims=256, bias=True)\n",
2024-07-26 21:07:40 +08:00
" (layers.1): LeakyReLU()\n",
" )\n",
2024-07-30 07:37:09 +08:00
" (layers.3): Dropout(p=0.30000000000000004)\n",
" (layers.4): Linear(input_dims=256, output_dims=1, bias=True)\n",
2024-07-26 21:07:40 +08:00
" )\n",
")"
]
},
2024-07-30 07:56:13 +08:00
"execution_count": 711,
2024-07-26 21:07:40 +08:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"disc = Discriminator()\n",
"disc"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Model Training 🏋🏻‍♂️"
]
},
{
2024-07-30 00:44:16 +08:00
"cell_type": "markdown",
2024-07-26 21:07:40 +08:00
"metadata": {},
"source": [
2024-07-30 00:44:16 +08:00
"### Losses"
2024-07-26 21:07:40 +08:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-07-30 00:44:16 +08:00
"#### Discriminator Loss"
2024-07-26 21:07:40 +08:00
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 712,
2024-07-26 21:07:40 +08:00
"metadata": {},
"outputs": [],
"source": [
2024-07-26 21:36:29 +08:00
"def disc_loss(gen, disc, real, num_images, z_dim):\n",
2024-07-30 00:44:16 +08:00
" \n",
2024-07-26 21:07:40 +08:00
" noise = mx.array(get_noise(num_images, z_dim))\n",
" fake_images = gen(noise)\n",
2024-07-27 06:09:51 +08:00
" \n",
2024-07-26 21:07:40 +08:00
" fake_disc = disc(fake_images)\n",
" \n",
2024-07-27 05:19:08 +08:00
" fake_labels = mx.zeros((fake_images.shape[0],1))\n",
2024-07-30 00:44:16 +08:00
" \n",
2024-07-30 07:06:52 +08:00
" fake_loss = nn.losses.binary_cross_entropy(fake_disc,fake_labels)\n",
2024-07-26 21:07:40 +08:00
" \n",
" real_disc = disc(real)\n",
2024-07-27 05:19:08 +08:00
" real_labels = mx.ones((real.shape[0],1))\n",
"\n",
2024-07-30 07:06:52 +08:00
" real_loss = nn.losses.binary_cross_entropy(real_disc,real_labels)\n",
2024-07-26 21:07:40 +08:00
"\n",
2024-07-30 07:06:52 +08:00
" disc_loss = (fake_loss + real_loss) / 2\n",
2024-07-26 21:07:40 +08:00
"\n",
" return disc_loss"
]
},
2024-07-30 00:44:16 +08:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Generator Loss"
]
},
2024-07-26 21:07:40 +08:00
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 713,
2024-07-26 21:07:40 +08:00
"metadata": {},
"outputs": [],
"source": [
2024-07-26 21:36:29 +08:00
"def gen_loss(gen, disc, num_images, z_dim):\n",
2024-07-26 21:07:40 +08:00
"\n",
" noise = mx.array(get_noise(num_images, z_dim))\n",
2024-07-30 07:06:52 +08:00
" \n",
2024-07-26 21:07:40 +08:00
" fake_images = gen(noise)\n",
" fake_disc = disc(fake_images)\n",
"\n",
2024-07-27 05:19:08 +08:00
" fake_labels = mx.ones((fake_images.shape[0],1))\n",
2024-07-30 00:44:16 +08:00
" \n",
2024-07-30 07:06:52 +08:00
" gen_loss = nn.losses.binary_cross_entropy(fake_disc,fake_labels)\n",
2024-07-26 21:07:40 +08:00
"\n",
" return gen_loss"
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 714,
2024-07-30 00:44:16 +08:00
"metadata": {},
"outputs": [],
"source": [
"# Get only the training images\n",
"train_images,*_ = map(np.array, mnist.mnist())"
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 715,
2024-07-26 21:07:40 +08:00
"metadata": {},
"outputs": [],
"source": [
2024-07-30 00:44:16 +08:00
"# Normalize the images to fall between -1,1\n",
"train_images = train_images * 2.0 - 1.0"
2024-07-26 21:07:40 +08:00
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 716,
2024-07-29 06:24:50 +08:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2024-07-30 07:56:13 +08:00
"<matplotlib.image.AxesImage at 0x167423250>"
2024-07-29 06:24:50 +08:00
]
},
2024-07-30 07:56:13 +08:00
"execution_count": 716,
2024-07-29 06:24:50 +08:00
"metadata": {},
"output_type": "execute_result"
2024-07-30 00:44:16 +08:00
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
2024-07-29 06:24:50 +08:00
}
],
"source": [
2024-07-30 00:44:16 +08:00
"plt.imshow(train_images[0].reshape(28,28),cmap='gray')"
2024-07-29 06:24:50 +08:00
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 717,
2024-07-26 21:07:40 +08:00
"metadata": {},
"outputs": [],
"source": [
2024-07-30 00:44:16 +08:00
"def batch_iterate(batch_size: int, ipt: list[int])-> list[int]:\n",
2024-07-29 06:24:50 +08:00
" perm = np.random.permutation(len(ipt))\n",
" for s in range(0, len(ipt), batch_size):\n",
2024-07-26 21:07:40 +08:00
" ids = perm[s : s + batch_size]\n",
2024-07-30 00:44:16 +08:00
" yield ipt[ids]"
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 718,
2024-07-30 00:44:16 +08:00
"metadata": {},
"outputs": [],
"source": [
"def show_images(imgs:list[int],num_imgs:int = 25):\n",
" if (imgs.shape[0] > 0): \n",
" fig,axes = plt.subplots(5, 5, figsize=(5, 5))\n",
" \n",
" for i, ax in enumerate(axes.flat):\n",
" img = mx.array(imgs[i]).reshape(28,28)\n",
" ax.imshow(img,cmap='gray')\n",
" ax.axis('off')\n",
" plt.show()"
2024-07-26 21:07:40 +08:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-07-30 00:44:16 +08:00
"### show first batch of images"
2024-07-26 21:07:40 +08:00
]
},
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 719,
2024-07-26 21:07:40 +08:00
"metadata": {},
"outputs": [
{
"data": {
2024-07-30 07:56:13 +08:00
"image/png": "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
2024-07-26 21:07:40 +08:00
"text/plain": [
2024-07-29 06:24:50 +08:00
"<Figure size 500x500 with 25 Axes>"
2024-07-26 21:07:40 +08:00
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
2024-07-30 00:44:16 +08:00
"X = batch_iterate(25, train_images)\n",
"for x in X: \n",
" show_images(x)\n",
2024-07-26 21:07:40 +08:00
" break"
]
},
2024-07-30 07:06:52 +08:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Training Cycle"
]
},
2024-07-26 21:07:40 +08:00
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 720,
2024-07-27 06:09:51 +08:00
"metadata": {},
2024-07-29 06:24:50 +08:00
"outputs": [],
2024-07-27 06:09:51 +08:00
"source": [
2024-07-30 07:56:13 +08:00
"lr = 1e-6\n",
"z_dim = 8\n",
2024-07-30 07:06:52 +08:00
"\n",
2024-07-27 06:09:51 +08:00
"gen = Generator(z_dim)\n",
"mx.eval(gen.parameters())\n",
2024-07-30 07:44:41 +08:00
"gen_opt = optim.Adam(learning_rate=lr, betas=[0.5, 0.999]) #,betas=[0.5, 0.9]\n",
2024-07-27 06:09:51 +08:00
"\n",
"disc = Discriminator()\n",
"mx.eval(disc.parameters())\n",
2024-07-30 07:44:41 +08:00
"disc_opt = optim.Adam(learning_rate=lr, betas=[0.5, 0.999])"
2024-07-29 06:30:08 +08:00
]
},
2024-07-27 06:09:51 +08:00
{
"cell_type": "code",
2024-07-30 07:56:13 +08:00
"execution_count": 721,
2024-07-27 06:09:51 +08:00
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 0%| | 1/200 [00:05<18:14, 5.50s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29126, dtype=float32) G=array(4.85983, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 1%| | 2/200 [00:10<17:36, 5.33s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29126, dtype=float32) G=array(4.85983, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 2%|▏ | 3/200 [00:15<17:25, 5.31s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85983, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 2%|▏ | 4/200 [00:21<17:13, 5.27s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85983, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 2%|▎ | 5/200 [00:26<17:06, 5.26s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85983, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 3%|▎ | 6/200 [00:31<17:02, 5.27s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85983, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 4%|▎ | 7/200 [00:36<16:53, 5.25s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85983, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 4%|▍ | 8/200 [00:42<16:45, 5.23s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 4%|▍ | 9/200 [00:47<16:37, 5.22s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 5%|▌ | 10/200 [00:52<16:32, 5.22s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85983, dtype=float32)\n",
"Step 10: Generator loss: array(4.85982, dtype=float32), discriminator loss: array(2.4338, dtype=float32)\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 6%|▌ | 11/200 [00:58<17:02, 5.41s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 6%|▌ | 12/200 [01:03<16:49, 5.37s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 6%|▋ | 13/200 [01:08<16:36, 5.33s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 7%|▋ | 14/200 [01:14<16:27, 5.31s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 8%|▊ | 15/200 [01:20<17:14, 5.59s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 8%|▊ | 16/200 [01:25<17:00, 5.55s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 8%|▊ | 17/200 [01:31<16:39, 5.46s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 9%|▉ | 18/200 [01:36<16:20, 5.39s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 10%|▉ | 19/200 [01:41<16:08, 5.35s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 10%|█ | 20/200 [01:46<15:56, 5.31s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 10%|█ | 21/200 [01:52<15:48, 5.30s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n",
"Step 21: Generator loss: array(4.85982, dtype=float32), discriminator loss: array(2.4338, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
2024-07-30 07:56:13 +08:00
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
2024-07-30 07:44:41 +08:00
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 11%|█ | 22/200 [01:58<16:17, 5.49s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 12%|█▏ | 23/200 [02:03<15:57, 5.41s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 12%|█▏ | 24/200 [02:08<15:44, 5.37s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 12%|█▎ | 25/200 [02:13<15:31, 5.32s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 13%|█▎ | 26/200 [02:19<15:24, 5.31s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 14%|█▎ | 27/200 [02:24<15:17, 5.30s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 14%|█▍ | 28/200 [02:29<15:13, 5.31s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 14%|█▍ | 29/200 [02:34<15:03, 5.28s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85982, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 15%|█▌ | 30/200 [02:40<14:57, 5.28s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 16%|█▌ | 31/200 [02:45<14:50, 5.27s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n",
"Step 31: Generator loss: array(4.85981, dtype=float32), discriminator loss: array(2.4338, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"data": {
2024-07-30 07:56:13 +08:00
"image/png": "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
2024-07-30 07:44:41 +08:00
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
2024-07-30 07:56:13 +08:00
"image/png": "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
2024-07-30 07:44:41 +08:00
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 16%|█▌ | 32/200 [02:51<15:13, 5.43s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 16%|█▋ | 33/200 [02:56<15:01, 5.40s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 17%|█▋ | 34/200 [03:01<14:50, 5.37s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 18%|█▊ | 35/200 [03:07<14:40, 5.34s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 18%|█▊ | 36/200 [03:12<14:35, 5.34s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 18%|█▊ | 37/200 [03:17<14:27, 5.32s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 19%|█▉ | 38/200 [03:23<14:23, 5.33s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 20%|█▉ | 39/200 [03:28<14:16, 5.32s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 20%|██ | 40/200 [03:33<14:09, 5.31s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 20%|██ | 41/200 [03:38<14:00, 5.29s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 21%|██ | 42/200 [03:44<13:57, 5.30s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n",
"Step 42: Generator loss: array(4.85981, dtype=float32), discriminator loss: array(2.4338, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
2024-07-30 07:56:13 +08:00
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 22%|██▏ | 43/200 [03:50<14:19, 5.47s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 22%|██▏ | 44/200 [03:55<14:07, 5.43s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 22%|██▎ | 45/200 [04:00<13:56, 5.40s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 23%|██▎ | 46/200 [04:06<13:45, 5.36s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 24%|██▎ | 47/200 [04:11<13:36, 5.34s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 24%|██▍ | 48/200 [04:16<13:30, 5.33s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 24%|██▍ | 49/200 [04:21<13:23, 5.32s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 25%|██▌ | 50/200 [04:27<13:17, 5.32s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 26%|██▌ | 51/200 [04:32<13:10, 5.31s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 26%|██▌ | 52/200 [04:37<13:03, 5.29s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 26%|██▋ | 53/200 [04:43<12:57, 5.29s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n",
"Step 53: Generator loss: array(4.85981, dtype=float32), discriminator loss: array(2.4338, dtype=float32)\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 27%|██▋ | 54/200 [04:48<13:18, 5.47s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 28%|██▊ | 55/200 [04:54<13:04, 5.41s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 28%|██▊ | 56/200 [04:59<12:53, 5.37s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 28%|██▊ | 57/200 [05:05<13:03, 5.48s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 29%|██▉ | 58/200 [05:10<12:50, 5.43s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 30%|██▉ | 59/200 [05:15<12:36, 5.37s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 30%|███ | 60/200 [05:20<12:23, 5.31s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 30%|███ | 61/200 [05:26<12:20, 5.32s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 31%|███ | 62/200 [05:31<12:12, 5.31s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 32%|███▏ | 63/200 [05:36<12:04, 5.29s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n",
"Step 63: Generator loss: array(4.85981, dtype=float32), discriminator loss: array(2.4338, dtype=float32)\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 32%|███▏ | 64/200 [05:42<12:21, 5.45s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 32%|███▎ | 65/200 [05:47<12:08, 5.40s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 33%|███▎ | 66/200 [05:53<11:57, 5.36s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 34%|███▎ | 67/200 [05:58<11:49, 5.33s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 34%|███▍ | 68/200 [06:03<11:42, 5.32s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 34%|███▍ | 69/200 [06:08<11:34, 5.30s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 35%|███▌ | 70/200 [06:14<11:27, 5.29s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 36%|███▌ | 71/200 [06:19<11:21, 5.28s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 36%|███▌ | 72/200 [06:24<11:16, 5.29s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 36%|███▋ | 73/200 [06:30<11:15, 5.32s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 37%|███▋ | 74/200 [06:35<11:08, 5.30s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n",
"Step 74: Generator loss: array(4.85981, dtype=float32), discriminator loss: array(2.4338, dtype=float32)\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 38%|███▊ | 75/200 [06:41<11:24, 5.48s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 38%|███▊ | 76/200 [06:46<11:10, 5.40s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 38%|███▊ | 77/200 [06:51<10:58, 5.36s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 39%|███▉ | 78/200 [06:57<10:50, 5.33s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 40%|███▉ | 79/200 [07:02<10:44, 5.32s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 40%|████ | 80/200 [07:07<10:36, 5.31s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 40%|████ | 81/200 [07:12<10:29, 5.29s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 41%|████ | 82/200 [07:18<10:22, 5.28s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 42%|████▏ | 83/200 [07:23<10:18, 5.28s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 42%|████▏ | 84/200 [07:28<10:16, 5.31s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 42%|████▎ | 85/200 [07:34<10:11, 5.31s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n",
"Step 85: Generator loss: array(4.85981, dtype=float32), discriminator loss: array(2.4338, dtype=float32)\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 43%|████▎ | 86/200 [07:40<10:24, 5.48s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 44%|████▎ | 87/200 [07:45<10:13, 5.43s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 44%|████▍ | 88/200 [07:50<10:01, 5.37s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 44%|████▍ | 89/200 [07:55<09:51, 5.33s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 45%|████▌ | 90/200 [08:01<09:43, 5.31s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 46%|████▌ | 91/200 [08:06<09:38, 5.31s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 46%|████▌ | 92/200 [08:12<09:55, 5.51s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 46%|████▋ | 93/200 [08:17<09:48, 5.50s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 47%|████▋ | 94/200 [08:23<09:42, 5.50s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 48%|████▊ | 95/200 [08:28<09:36, 5.49s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n",
"Step 95: Generator loss: array(4.85981, dtype=float32), discriminator loss: array(2.4338, dtype=float32)\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 500x500 with 25 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
2024-07-30 07:44:41 +08:00
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 48%|████▊ | 96/200 [08:35<10:05, 5.82s/it]"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
"Losses D=array(2.29125, dtype=float32) G=array(4.85981, dtype=float32)\n"
2024-07-30 07:44:41 +08:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-07-30 07:56:13 +08:00
" 48%|████▊ | 96/200 [08:39<09:22, 5.41s/it]\n"
2024-07-30 07:44:41 +08:00
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
2024-07-30 07:56:13 +08:00
"Cell \u001b[0;32mIn[721], line 23\u001b[0m\n\u001b[1;32m 20\u001b[0m disc_opt\u001b[38;5;241m.\u001b[39mupdate(disc, D_grads)\n\u001b[1;32m 22\u001b[0m \u001b[38;5;66;03m# Update gradients\u001b[39;00m\n\u001b[0;32m---> 23\u001b[0m \u001b[43mmx\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43meval\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdisc\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparameters\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdisc_opt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstate\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 25\u001b[0m \u001b[38;5;66;03m# TODO Train Generator\u001b[39;00m\n\u001b[1;32m 26\u001b[0m G_loss,G_grads \u001b[38;5;241m=\u001b[39m G_loss_grad(gen, disc, batch_size, z_dim)\n",
2024-07-30 07:44:41 +08:00
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
2024-07-29 00:18:35 +08:00
]
2024-07-26 21:07:40 +08:00
}
],
"source": [
2024-07-30 00:44:16 +08:00
"# Set your parameters\n",
"n_epochs = 200\n",
"display_step = 5000\n",
2024-07-28 06:10:19 +08:00
"cur_step = 0\n",
2024-07-30 00:44:16 +08:00
"\n",
2024-07-30 07:44:41 +08:00
"batch_size = 128\n",
2024-07-26 21:07:40 +08:00
"\n",
2024-07-28 06:10:19 +08:00
"D_loss_grad = nn.value_and_grad(disc, disc_loss)\n",
"G_loss_grad = nn.value_and_grad(gen, gen_loss)\n",
"\n",
"\n",
2024-07-30 00:44:16 +08:00
"for epoch in tqdm(range(n_epochs)):\n",
2024-07-28 06:10:19 +08:00
"\n",
2024-07-30 00:44:16 +08:00
" for real in batch_iterate(batch_size, train_images):\n",
2024-07-28 06:10:19 +08:00
" \n",
2024-07-30 00:44:16 +08:00
" # TODO Train Discriminator\n",
2024-07-30 07:06:52 +08:00
" D_loss,D_grads = D_loss_grad(gen, disc,mx.array(real), batch_size, z_dim)\n",
2024-07-28 06:10:19 +08:00
"\n",
" # Update optimizer\n",
" disc_opt.update(disc, D_grads)\n",
" \n",
" # Update gradients\n",
" mx.eval(disc.parameters(), disc_opt.state)\n",
2024-07-26 21:07:40 +08:00
"\n",
2024-07-30 00:44:16 +08:00
" # TODO Train Generator\n",
" G_loss,G_grads = G_loss_grad(gen, disc, batch_size, z_dim)\n",
2024-07-28 06:10:19 +08:00
" \n",
" # Update optimizer\n",
" gen_opt.update(gen, G_grads)\n",
" \n",
" # Update gradients\n",
2024-07-30 07:37:09 +08:00
" mx.eval(gen.parameters(), gen_opt.state) \n",
2024-07-30 07:44:41 +08:00
" \n",
" if (cur_step + 1) % display_step == 0:\n",
" print(f\"Step {epoch}: Generator loss: {G_loss}, discriminator loss: {D_loss}\")\n",
" fake_noise = mx.array(get_noise(batch_size, z_dim))\n",
" fake = gen(fake_noise)\n",
" show_images(fake)\n",
" show_images(real)\n",
" cur_step += 1\n",
"\n",
" print('Losses D={0} G={1}'.format(D_loss,G_loss))"
2024-07-27 05:19:08 +08:00
]
2024-07-26 21:07:40 +08:00
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.10"
}
},
"nbformat": 4,
"nbformat_minor": 2
}