{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Import Library" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [], "source": [ "import mnist" ] }, { "cell_type": "code", "execution_count": 114, "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" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# GAN Architecture" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generator 👨🏻‍🎨" ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [], "source": [ "def GenBlock(in_dim:int,out_dim:int):\n", " \n", " return nn.Sequential(\n", " nn.Linear(in_dim,out_dim),\n", " nn.BatchNorm(out_dim),\n", " nn.ReLU()\n", " )" ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [], "source": [ "class Generator(nn.Module):\n", "\n", " def __init__(self, z_dim:int = 10, im_dim:int = 784, hidden_dim: int =128):\n", " 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", " GenBlock(hidden_dim * 4, hidden_dim * 8),\n", "\n", "\n", " nn.Linear(hidden_dim * 8,im_dim),\n", " nn.Sigmoid()\n", " )\n", " \n", " def __call__(self, noise):\n", "\n", " return self.gen(noise)" ] }, { "cell_type": "code", "execution_count": 117, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Generator(\n", " (gen): Sequential(\n", " (layers.0): Sequential(\n", " (layers.0): Linear(input_dims=100, output_dims=128, bias=True)\n", " (layers.1): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (layers.2): ReLU()\n", " )\n", " (layers.1): Sequential(\n", " (layers.0): Linear(input_dims=128, output_dims=256, bias=True)\n", " (layers.1): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (layers.2): ReLU()\n", " )\n", " (layers.2): Sequential(\n", " (layers.0): Linear(input_dims=256, output_dims=512, bias=True)\n", " (layers.1): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (layers.2): ReLU()\n", " )\n", " (layers.3): Sequential(\n", " (layers.0): Linear(input_dims=512, output_dims=1024, bias=True)\n", " (layers.1): BatchNorm(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (layers.2): ReLU()\n", " )\n", " (layers.4): Linear(input_dims=1024, output_dims=784, bias=True)\n", " (layers.5): Sigmoid()\n", " )\n", ")" ] }, "execution_count": 117, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gen = Generator(100)\n", "gen" ] }, { "cell_type": "code", "execution_count": 118, "metadata": {}, "outputs": [], "source": [ "def get_noise(n_samples, z_dim):\n", " return np.random.randn(n_samples,z_dim)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Discriminator 🕵🏻‍♂️" ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [], "source": [ "def DisBlock(in_dim:int,out_dim:int):\n", " return nn.Sequential(\n", " nn.Linear(in_dim,out_dim),\n", " nn.LeakyReLU(negative_slope=0.2)\n", " )" ] }, { "cell_type": "code", "execution_count": 120, "metadata": {}, "outputs": [], "source": [ "class Discriminator(nn.Module):\n", "\n", " def __init__(self,im_dim:int = 784, hidden_dim:int = 128):\n", " super(Discriminator, self).__init__()\n", "\n", " self.disc = nn.Sequential(\n", " DisBlock(im_dim, hidden_dim * 4),\n", " DisBlock(hidden_dim * 4, hidden_dim * 2),\n", " DisBlock(hidden_dim * 2, hidden_dim),\n", "\n", " nn.Linear(hidden_dim,1),\n", " )\n", " \n", " def __call__(self, noise):\n", "\n", " return self.disc(noise)" ] }, { "cell_type": "code", "execution_count": 121, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Discriminator(\n", " (disc): Sequential(\n", " (layers.0): Sequential(\n", " (layers.0): Linear(input_dims=784, output_dims=512, bias=True)\n", " (layers.1): LeakyReLU()\n", " )\n", " (layers.1): Sequential(\n", " (layers.0): Linear(input_dims=512, output_dims=256, bias=True)\n", " (layers.1): LeakyReLU()\n", " )\n", " (layers.2): Sequential(\n", " (layers.0): Linear(input_dims=256, output_dims=128, bias=True)\n", " (layers.1): LeakyReLU()\n", " )\n", " (layers.3): Linear(input_dims=128, output_dims=1, bias=True)\n", " )\n", ")" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" } ], "source": [ "disc = Discriminator()\n", "disc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Model Training 🏋🏻‍♂️" ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [], "source": [ "# Set your parameters\n", "criterion = nn.losses.binary_cross_entropy\n", "n_epochs = 200\n", "z_dim = 64\n", "display_step = 500\n", "batch_size = 128\n", "lr = 0.00001" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[123], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m gen \u001b[38;5;241m=\u001b[39m Generator(z_dim)\n\u001b[0;32m----> 2\u001b[0m \u001b[43mmx\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43meval\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgen\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\n\u001b[1;32m 3\u001b[0m gen_opt \u001b[38;5;241m=\u001b[39m optim\u001b[38;5;241m.\u001b[39mAdam(learning_rate\u001b[38;5;241m=\u001b[39mlr)\n\u001b[1;32m 5\u001b[0m disc \u001b[38;5;241m=\u001b[39m Discriminator()\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], "source": [ "gen = Generator(z_dim)\n", "mx.eval(gen.parameters())\n", "gen_opt = optim.Adam(learning_rate=lr)\n", "\n", "disc = Discriminator()\n", "mx.eval(disc.parameters())\n", "disc_opt = optim.Adam(learning_rate=lr)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Losses" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def disc_loss(gen, disc, real, num_images, z_dim):\n", " noise = mx.array(get_noise(num_images, z_dim))\n", " fake_images = gen(noise)\n", " \n", " fake_disc = disc(fake_images)\n", " \n", " fake_labels = mx.zeros((fake_images.shape[0],1))\n", " fake_loss = nn.losses.binary_cross_entropy(fake_disc,fake_labels,with_logits=True)\n", " \n", " real_disc = disc(real)\n", " real_labels = mx.ones((real.shape[0],1))\n", "\n", " # print('Shapes.....',real_disc.shape,real_labels.shape)\n", " real_loss = nn.losses.binary_cross_entropy(real_disc,real_labels)\n", "\n", " disc_loss = (fake_loss + real_loss) / 2\n", "\n", " return disc_loss" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def gen_loss(gen, disc, num_images, z_dim):\n", "\n", " noise = mx.array(get_noise(num_images, z_dim))\n", " fake_images = gen(noise)\n", " \n", " fake_disc = disc(fake_images)\n", "\n", " fake_labels = mx.ones((fake_images.shape[0],1))\n", " \n", " gen_loss = nn.losses.binary_cross_entropy(fake_disc,fake_labels,with_logits=True)\n", "\n", " return gen_loss" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [], "source": [ "train_images, _, test_images, _ = map(\n", " mx.array, getattr(mnist, 'mnist')()\n", ")" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [], "source": [ "def batch_iterate(batch_size:int, ipt:list):\n", " perm = mx.array(np.random.permutation(len(ipt)))\n", " for s in range(0, ipt.size, batch_size):\n", " ids = perm[s : s + batch_size]\n", " yield ipt[ids]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### show batch of images" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for X in batch_iterate(16, train_images):\n", " fig,axes = plt.subplots(4, 4, figsize=(4, 4))\n", "\n", " for i, ax in enumerate(axes.flat):\n", " img = mx.array(X[i]).reshape(28,28)\n", " ax.imshow(img,cmap='gray')\n", " ax.axis('off')\n", " break" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ " 0%| | 139/60000 [00:00<01:22, 726.53it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 1%| | 307/60000 [00:00<01:14, 801.44it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 1%| | 471/60000 [00:00<01:13, 808.99it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 1%| | 633/60000 [00:00<01:14, 800.05it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 1%|▏ | 794/60000 [00:01<01:16, 778.34it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 2%|▏ | 949/60000 [00:01<01:18, 747.52it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 2%|▏ | 1098/60000 [00:01<01:20, 733.90it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 2%|▏ | 1240/60000 [00:01<01:28, 660.48it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 2%|▏ | 1307/60000 [00:01<01:29, 656.89it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 2%|▏ | 1438/60000 [00:02<01:36, 608.91it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 3%|▎ | 1561/60000 [00:02<01:36, 603.59it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 3%|▎ | 1683/60000 [00:02<01:40, 582.79it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 3%|▎ | 1799/60000 [00:02<01:45, 552.37it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 3%|▎ | 1915/60000 [00:02<01:46, 543.12it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 3%|▎ | 2026/60000 [00:03<01:46, 543.94it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 4%|▎ | 2142/60000 [00:03<01:43, 560.25it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 4%|▍ | 2257/60000 [00:03<01:45, 545.45it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 4%|▍ | 2365/60000 [00:03<01:51, 518.84it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 4%|▍ | 2472/60000 [00:03<01:53, 506.74it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 4%|▍ | 2575/60000 [00:04<01:53, 504.04it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 4%|▍ | 2626/60000 [00:04<02:02, 469.09it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 5%|▍ | 2781/60000 [00:04<01:55, 494.90it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 5%|▍ | 2831/60000 [00:04<01:56, 490.73it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 5%|▍ | 2928/60000 [00:04<02:10, 438.99it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 5%|▌ | 3023/60000 [00:05<02:05, 453.50it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 5%|▌ | 3118/60000 [00:05<02:03, 460.44it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 5%|▌ | 3211/60000 [00:05<02:06, 449.22it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 6%|▌ | 3302/60000 [00:05<02:16, 416.36it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 6%|▌ | 3391/60000 [00:05<02:12, 426.27it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 6%|▌ | 3479/60000 [00:06<02:13, 423.14it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 6%|▌ | 3564/60000 [00:06<02:17, 411.69it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 6%|▌ | 3648/60000 [00:06<02:20, 401.16it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n", "real shape , (784,)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 6%|▌ | 3662/60000 [00:54<14:01, 66.96it/s] \n" ] }, { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[108], line 40\u001b[0m\n\u001b[1;32m 37\u001b[0m G_loss,G_grads \u001b[38;5;241m=\u001b[39m G_loss_grad(gen, disc, batch_size, z_dim)\n\u001b[1;32m 39\u001b[0m \u001b[38;5;66;03m# Update optimizer\u001b[39;00m\n\u001b[0;32m---> 40\u001b[0m \u001b[43mgen_opt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mupdate\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgen\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mG_grads\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 42\u001b[0m \u001b[38;5;66;03m# Update gradients\u001b[39;00m\n\u001b[1;32m 43\u001b[0m \n\u001b[1;32m 44\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 60\u001b[0m \u001b[38;5;66;03m# mean_discriminator_loss = 0\u001b[39;00m\n\u001b[1;32m 61\u001b[0m \u001b[38;5;66;03m# cur_step += 1\u001b[39;00m\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/optimizers/optimizers.py:29\u001b[0m, in \u001b[0;36mOptimizer.update\u001b[0;34m(self, model, gradients)\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mupdate\u001b[39m(\u001b[38;5;28mself\u001b[39m, model: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmlx.nn.Module\u001b[39m\u001b[38;5;124m\"\u001b[39m, gradients: \u001b[38;5;28mdict\u001b[39m):\n\u001b[1;32m 21\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Apply the gradients to the parameters of the model and update the\u001b[39;00m\n\u001b[1;32m 22\u001b[0m \u001b[38;5;124;03m model with the new parameters.\u001b[39;00m\n\u001b[1;32m 23\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[38;5;124;03m via :func:`mlx.nn.value_and_grad`.\u001b[39;00m\n\u001b[1;32m 28\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 29\u001b[0m model\u001b[38;5;241m.\u001b[39mupdate(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapply_gradients\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgradients\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m)\u001b[49m)\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/optimizers/optimizers.py:88\u001b[0m, in \u001b[0;36mOptimizer.apply_gradients\u001b[0;34m(self, gradients, parameters)\u001b[0m\n\u001b[1;32m 85\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstate[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstep\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstep \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[1;32m 87\u001b[0m \u001b[38;5;66;03m# Apply the update\u001b[39;00m\n\u001b[0;32m---> 88\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mtree_map\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapply_single\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgradients\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparameters\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstate\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/utils.py:48\u001b[0m, in \u001b[0;36mtree_map\u001b[0;34m(fn, tree, is_leaf, *rest)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m TreeType(\n\u001b[1;32m 44\u001b[0m tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[i] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, child \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(tree)\n\u001b[1;32m 46\u001b[0m )\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, \u001b[38;5;28mdict\u001b[39m):\n\u001b[0;32m---> 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 49\u001b[0m k: tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[k] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, child \u001b[38;5;129;01min\u001b[39;00m tree\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 51\u001b[0m }\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fn(tree, \u001b[38;5;241m*\u001b[39mrest)\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/utils.py:49\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m TreeType(\n\u001b[1;32m 44\u001b[0m tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[i] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, child \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(tree)\n\u001b[1;32m 46\u001b[0m )\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, \u001b[38;5;28mdict\u001b[39m):\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[0;32m---> 49\u001b[0m k: \u001b[43mtree_map\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfn\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mchild\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mr\u001b[49m\u001b[43m[\u001b[49m\u001b[43mk\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mr\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mrest\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mis_leaf\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_leaf\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, child \u001b[38;5;129;01min\u001b[39;00m tree\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 51\u001b[0m }\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fn(tree, \u001b[38;5;241m*\u001b[39mrest)\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/utils.py:48\u001b[0m, in \u001b[0;36mtree_map\u001b[0;34m(fn, tree, is_leaf, *rest)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m TreeType(\n\u001b[1;32m 44\u001b[0m tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[i] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, child \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(tree)\n\u001b[1;32m 46\u001b[0m )\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, \u001b[38;5;28mdict\u001b[39m):\n\u001b[0;32m---> 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 49\u001b[0m k: tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[k] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, child \u001b[38;5;129;01min\u001b[39;00m tree\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 51\u001b[0m }\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fn(tree, \u001b[38;5;241m*\u001b[39mrest)\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/utils.py:49\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m TreeType(\n\u001b[1;32m 44\u001b[0m tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[i] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, child \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(tree)\n\u001b[1;32m 46\u001b[0m )\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, \u001b[38;5;28mdict\u001b[39m):\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[0;32m---> 49\u001b[0m k: \u001b[43mtree_map\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfn\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mchild\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mr\u001b[49m\u001b[43m[\u001b[49m\u001b[43mk\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mr\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mrest\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mis_leaf\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_leaf\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, child \u001b[38;5;129;01min\u001b[39;00m tree\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 51\u001b[0m }\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fn(tree, \u001b[38;5;241m*\u001b[39mrest)\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/utils.py:43\u001b[0m, in \u001b[0;36mtree_map\u001b[0;34m(fn, tree, is_leaf, *rest)\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, (\u001b[38;5;28mlist\u001b[39m, \u001b[38;5;28mtuple\u001b[39m)):\n\u001b[1;32m 42\u001b[0m TreeType \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mtype\u001b[39m(tree)\n\u001b[0;32m---> 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mTreeType\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 44\u001b[0m \u001b[43m \u001b[49m\u001b[43mtree_map\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfn\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mchild\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mr\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mr\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mrest\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mis_leaf\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_leaf\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 45\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mi\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mchild\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43menumerate\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mtree\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 46\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, \u001b[38;5;28mdict\u001b[39m):\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 49\u001b[0m k: tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[k] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, child \u001b[38;5;129;01min\u001b[39;00m tree\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 51\u001b[0m }\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/utils.py:44\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, (\u001b[38;5;28mlist\u001b[39m, \u001b[38;5;28mtuple\u001b[39m)):\n\u001b[1;32m 42\u001b[0m TreeType \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mtype\u001b[39m(tree)\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m TreeType(\n\u001b[0;32m---> 44\u001b[0m \u001b[43mtree_map\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfn\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mchild\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mr\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mr\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mrest\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mis_leaf\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_leaf\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, child \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(tree)\n\u001b[1;32m 46\u001b[0m )\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, \u001b[38;5;28mdict\u001b[39m):\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 49\u001b[0m k: tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[k] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, child \u001b[38;5;129;01min\u001b[39;00m tree\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 51\u001b[0m }\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/utils.py:48\u001b[0m, in \u001b[0;36mtree_map\u001b[0;34m(fn, tree, is_leaf, *rest)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m TreeType(\n\u001b[1;32m 44\u001b[0m tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[i] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, child \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(tree)\n\u001b[1;32m 46\u001b[0m )\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, \u001b[38;5;28mdict\u001b[39m):\n\u001b[0;32m---> 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 49\u001b[0m k: tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[k] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, child \u001b[38;5;129;01min\u001b[39;00m tree\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 51\u001b[0m }\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fn(tree, \u001b[38;5;241m*\u001b[39mrest)\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/utils.py:49\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m TreeType(\n\u001b[1;32m 44\u001b[0m tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[i] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, child \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(tree)\n\u001b[1;32m 46\u001b[0m )\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, \u001b[38;5;28mdict\u001b[39m):\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[0;32m---> 49\u001b[0m k: \u001b[43mtree_map\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfn\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mchild\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mr\u001b[49m\u001b[43m[\u001b[49m\u001b[43mk\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mr\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mrest\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mis_leaf\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_leaf\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, child \u001b[38;5;129;01min\u001b[39;00m tree\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 51\u001b[0m }\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fn(tree, \u001b[38;5;241m*\u001b[39mrest)\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/utils.py:43\u001b[0m, in \u001b[0;36mtree_map\u001b[0;34m(fn, tree, is_leaf, *rest)\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, (\u001b[38;5;28mlist\u001b[39m, \u001b[38;5;28mtuple\u001b[39m)):\n\u001b[1;32m 42\u001b[0m TreeType \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mtype\u001b[39m(tree)\n\u001b[0;32m---> 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mTreeType\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 44\u001b[0m \u001b[43m \u001b[49m\u001b[43mtree_map\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfn\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mchild\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mr\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mr\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mrest\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mis_leaf\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_leaf\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 45\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mi\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mchild\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43menumerate\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mtree\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 46\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, \u001b[38;5;28mdict\u001b[39m):\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 49\u001b[0m k: tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[k] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, child \u001b[38;5;129;01min\u001b[39;00m tree\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 51\u001b[0m }\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/utils.py:44\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, (\u001b[38;5;28mlist\u001b[39m, \u001b[38;5;28mtuple\u001b[39m)):\n\u001b[1;32m 42\u001b[0m TreeType \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mtype\u001b[39m(tree)\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m TreeType(\n\u001b[0;32m---> 44\u001b[0m \u001b[43mtree_map\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfn\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mchild\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mr\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mr\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mrest\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mis_leaf\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_leaf\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, child \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(tree)\n\u001b[1;32m 46\u001b[0m )\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, \u001b[38;5;28mdict\u001b[39m):\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 49\u001b[0m k: tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[k] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, child \u001b[38;5;129;01min\u001b[39;00m tree\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 51\u001b[0m }\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/utils.py:48\u001b[0m, in \u001b[0;36mtree_map\u001b[0;34m(fn, tree, is_leaf, *rest)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m TreeType(\n\u001b[1;32m 44\u001b[0m tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[i] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, child \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(tree)\n\u001b[1;32m 46\u001b[0m )\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, \u001b[38;5;28mdict\u001b[39m):\n\u001b[0;32m---> 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 49\u001b[0m k: tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[k] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, child \u001b[38;5;129;01min\u001b[39;00m tree\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 51\u001b[0m }\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fn(tree, \u001b[38;5;241m*\u001b[39mrest)\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/utils.py:49\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m TreeType(\n\u001b[1;32m 44\u001b[0m tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[i] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, child \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(tree)\n\u001b[1;32m 46\u001b[0m )\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(tree, \u001b[38;5;28mdict\u001b[39m):\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[0;32m---> 49\u001b[0m k: \u001b[43mtree_map\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfn\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mchild\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mr\u001b[49m\u001b[43m[\u001b[49m\u001b[43mk\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mr\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mrest\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mis_leaf\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_leaf\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, child \u001b[38;5;129;01min\u001b[39;00m tree\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 51\u001b[0m }\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fn(tree, \u001b[38;5;241m*\u001b[39mrest)\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/utils.py:53\u001b[0m, in \u001b[0;36mtree_map\u001b[0;34m(fn, tree, is_leaf, *rest)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\n\u001b[1;32m 49\u001b[0m k: tree_map(fn, child, \u001b[38;5;241m*\u001b[39m(r[k] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m rest), is_leaf\u001b[38;5;241m=\u001b[39mis_leaf)\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, child \u001b[38;5;129;01min\u001b[39;00m tree\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 51\u001b[0m }\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m---> 53\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtree\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mrest\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/optimizers/optimizers.py:426\u001b[0m, in \u001b[0;36mAdam.apply_single\u001b[0;34m(self, gradient, parameter, state)\u001b[0m\n\u001b[1;32m 424\u001b[0m v \u001b[38;5;241m=\u001b[39m state[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mv\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 425\u001b[0m m \u001b[38;5;241m=\u001b[39m b1 \u001b[38;5;241m*\u001b[39m m \u001b[38;5;241m+\u001b[39m (\u001b[38;5;241m1\u001b[39m \u001b[38;5;241m-\u001b[39m b1) \u001b[38;5;241m*\u001b[39m gradient\n\u001b[0;32m--> 426\u001b[0m v \u001b[38;5;241m=\u001b[39m b2 \u001b[38;5;241m*\u001b[39m v \u001b[38;5;241m+\u001b[39m (\u001b[38;5;241m1\u001b[39m \u001b[38;5;241m-\u001b[39m b2) \u001b[38;5;241m*\u001b[39m \u001b[43mmx\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msquare\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgradient\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 427\u001b[0m state[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mm\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m m\n\u001b[1;32m 428\u001b[0m state[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mv\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m v\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], "source": [ "batch_size = 8\n", "cur_step = 0\n", "mean_generator_loss = 0\n", "mean_discriminator_loss = 0\n", "error = False\n", "\n", "D_loss_grad = nn.value_and_grad(disc, disc_loss)\n", "G_loss_grad = nn.value_and_grad(gen, gen_loss)\n", "\n", "\n", "for epoch in range(10):\n", " \n", " # Dataloader returns the batches\n", " # for real in tqdm(batch_iterate(batch_size, train_images)):\n", " \n", " for real in tqdm(train_images):\n", "\n", " \n", " # real = real.reshape(-1)\n", " \n", " # Flatten the batch of real images from the dataset\n", " \n", " # plt.imshow(real[0].reshape(28,28))\n", " # print(len(real))\n", " # break\n", " \n", " D_loss,D_grads = D_loss_grad(gen, disc, real, batch_size, z_dim)\n", "\n", " # Update optimizer\n", " disc_opt.update(disc, D_grads)\n", " \n", " # Update gradients\n", " \n", " G_loss,G_grads = G_loss_grad(gen, disc, batch_size, z_dim)\n", " \n", " # Update optimizer\n", " gen_opt.update(gen, G_grads)\n", " \n", " # Update gradients\n", "\n", "\n", " # # Keep track of the average discriminator loss\n", " # mean_discriminator_loss += disc_loss.item() / display_step\n", "\n", " # # Keep track of the average generator loss\n", " # mean_generator_loss += gen_loss.item() / display_step\n", "\n", " # ### Visualization code ###\n", " # if cur_step % display_step == 0 and cur_step > 0:\n", " # print(f\"Step {cur_step}: Generator loss: {mean_generator_loss}, discriminator loss: {mean_discriminator_loss}\")\n", " # fake_noise = get_noise(cur_batch_size, z_dim, device=device)\n", " # fake = gen(fake_noise)\n", " # show_tensor_images(fake)\n", " # show_tensor_images(real)\n", " # mean_generator_loss = 0\n", " # mean_discriminator_loss = 0\n", " # cur_step += 1\n" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Shapes..... (1,) (784, 1)\n" ] }, { "ename": "ValueError", "evalue": "Inputs shape (1,) does not match targets shape (784, 1).", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[90], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mdisc_loss\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgen\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdisc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreal\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbatch_size\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mz_dim\u001b[49m\u001b[43m)\u001b[49m\n", "Cell \u001b[0;32mIn[89], line 14\u001b[0m, in \u001b[0;36mdisc_loss\u001b[0;34m(gen, disc, real, num_images, z_dim)\u001b[0m\n\u001b[1;32m 11\u001b[0m real_labels \u001b[38;5;241m=\u001b[39m mx\u001b[38;5;241m.\u001b[39mones((real\u001b[38;5;241m.\u001b[39mshape[\u001b[38;5;241m0\u001b[39m],\u001b[38;5;241m1\u001b[39m))\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mShapes.....\u001b[39m\u001b[38;5;124m'\u001b[39m,real_disc\u001b[38;5;241m.\u001b[39mshape,real_labels\u001b[38;5;241m.\u001b[39mshape)\n\u001b[0;32m---> 14\u001b[0m real_loss \u001b[38;5;241m=\u001b[39m \u001b[43mnn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlosses\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbinary_cross_entropy\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreal_disc\u001b[49m\u001b[43m,\u001b[49m\u001b[43mreal_labels\u001b[49m\u001b[43m,\u001b[49m\u001b[43mwith_logits\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 16\u001b[0m disc_loss \u001b[38;5;241m=\u001b[39m (fake_loss \u001b[38;5;241m+\u001b[39m real_loss) \u001b[38;5;241m/\u001b[39m \u001b[38;5;241m2\u001b[39m\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m disc_loss\n", "File \u001b[0;32m~/miniforge3/lib/python3.10/site-packages/mlx/nn/losses.py:155\u001b[0m, in \u001b[0;36mbinary_cross_entropy\u001b[0;34m(inputs, targets, weights, with_logits, reduction)\u001b[0m\n\u001b[1;32m 124\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 125\u001b[0m \u001b[38;5;124;03mComputes the binary cross entropy loss.\u001b[39;00m\n\u001b[1;32m 126\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 152\u001b[0m \u001b[38;5;124;03m array(0.510826, dtype=float32)\u001b[39;00m\n\u001b[1;32m 153\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 154\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m inputs\u001b[38;5;241m.\u001b[39mshape \u001b[38;5;241m!=\u001b[39m targets\u001b[38;5;241m.\u001b[39mshape:\n\u001b[0;32m--> 155\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 156\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInputs shape \u001b[39m\u001b[38;5;132;01m{\u001b[39;00minputs\u001b[38;5;241m.\u001b[39mshape\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m does not match targets shape \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtargets\u001b[38;5;241m.\u001b[39mshape\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 157\u001b[0m )\n\u001b[1;32m 159\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m with_logits:\n\u001b[1;32m 160\u001b[0m loss \u001b[38;5;241m=\u001b[39m mx\u001b[38;5;241m.\u001b[39mlogaddexp(\u001b[38;5;241m0.0\u001b[39m, inputs) \u001b[38;5;241m-\u001b[39m inputs \u001b[38;5;241m*\u001b[39m targets\n", "\u001b[0;31mValueError\u001b[0m: Inputs shape (1,) does not match targets shape (784, 1)." ] } ], "source": [ "disc_loss(gen, disc, real, batch_size, z_dim)" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "784" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "real.shape[0]" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(8, 784)" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "real.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "real.reshape((-1,len(real))).shape" ] } ], "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 }