Created
December 18, 2017 09:52
-
-
Save sedflix/9d23bedc8f6370b5578067757af11463 to your computer and use it in GitHub Desktop.
variational_autoencoder_deconv from examples
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Using TensorFlow backend.\n" | |
] | |
} | |
], | |
"source": [ | |
"import keras\n", | |
"import pandas\n", | |
"import glob\n", | |
"import os\n", | |
"from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img\n", | |
"from keras.preprocessing.image import ImageDataGenerator\n", | |
"from keras.models import Sequential\n", | |
"from keras.layers import Dense, Dropout, Activation, Flatten\n", | |
"from keras.layers import Conv2D, MaxPooling2D\n", | |
"import numpy as np\n", | |
"from keras.layers import Input, Dense, Lambda, Flatten, Reshape, Layer\n", | |
"from keras.layers import Conv2D, Conv2DTranspose\n", | |
"from keras.models import Model\n", | |
"from keras import backend as K\n", | |
"from keras import metrics" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"image_width = 90\n", | |
"image_height = 45\n", | |
"epochs = 50\n", | |
"num_class = 5" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"cat1 = glob.glob('./old_dataset/data/*/cat1/*.jpg')\n", | |
"cat2 = glob.glob('./old_dataset/data/*/cat2/*.jpg')\n", | |
"cat3 = glob.glob('./old_dataset/data/*/cat3/*.jpg')\n", | |
"cat4 = glob.glob('./old_dataset/data/*/cat4/*.jpg')\n", | |
"cat5 = glob.glob('./old_dataset/data/*/cat5/*.jpg')\n", | |
"X = []\n", | |
"Y = []\n", | |
"def fill_list(small_list,cat, x,y):\n", | |
" for i in small_list:\n", | |
" img = load_img(i, target_size=(image_width, image_height)) \n", | |
" img = img_to_array(img) \n", | |
"# img = img.reshape(img.shape)\n", | |
" x.append(img)\n", | |
" y.append(cat)\n", | |
" return x,y \n", | |
" \n", | |
"X,Y = fill_list(cat1,0,X,Y)\n", | |
"X,Y = fill_list(cat2,1,X,Y)\n", | |
"X,Y = fill_list(cat3,2,X,Y)\n", | |
"X,Y = fill_list(cat4,3,X,Y)\n", | |
"X,Y = fill_list(cat5,4,X,Y)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"number of samples: 10512\n", | |
"image shape: (90, 45, 3)\n" | |
] | |
} | |
], | |
"source": [ | |
"Y = keras.utils.to_categorical(Y, num_classes=num_class)\n", | |
"X = np.array(X)\n", | |
"X = X.reshape(X.shape[0],image_width, image_height,3)\n", | |
"X = X.astype('float32')\n", | |
"\n", | |
"print(\"number of samples: \",len(X))\n", | |
"print(\"image shape: \",X[0].shape)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"__________________________________________________________________________________________________\n", | |
"Layer (type) Output Shape Param # Connected to \n", | |
"==================================================================================================\n", | |
"input_1 (InputLayer) (None, 90, 45, 3) 0 \n", | |
"__________________________________________________________________________________________________\n", | |
"conv2d_1 (Conv2D) (None, 90, 45, 3) 39 input_1[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"conv2d_2 (Conv2D) (None, 45, 23, 64) 832 conv2d_1[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"conv2d_3 (Conv2D) (None, 45, 23, 64) 36928 conv2d_2[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"conv2d_4 (Conv2D) (None, 45, 23, 64) 36928 conv2d_3[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"flatten_1 (Flatten) (None, 66240) 0 conv2d_4[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"dense_1 (Dense) (None, 128) 8478848 flatten_1[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"dense_2 (Dense) (None, 2) 258 dense_1[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"dense_3 (Dense) (None, 2) 258 dense_1[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"lambda_1 (Lambda) (None, 2) 0 dense_2[0][0] \n", | |
" dense_3[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"dense_4 (Dense) (None, 128) 384 lambda_1[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"dense_5 (Dense) (None, 12544) 1618176 dense_4[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"reshape_1 (Reshape) (None, 14, 14, 64) 0 dense_5[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"conv2d_transpose_1 (Conv2DTrans (None, 14, 14, 64) 36928 reshape_1[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"conv2d_transpose_2 (Conv2DTrans (None, 14, 14, 64) 36928 conv2d_transpose_1[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"conv2d_transpose_3 (Conv2DTrans (None, 29, 29, 64) 36928 conv2d_transpose_2[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"conv2d_5 (Conv2D) (None, 28, 28, 3) 771 conv2d_transpose_3[0][0] \n", | |
"__________________________________________________________________________________________________\n", | |
"custom_variational_layer_1 (Cus [(None, 90, 45, 3), 0 input_1[0][0] \n", | |
" conv2d_5[0][0] \n", | |
"==================================================================================================\n", | |
"Total params: 10,284,206\n", | |
"Trainable params: 10,284,206\n", | |
"Non-trainable params: 0\n", | |
"__________________________________________________________________________________________________\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py:119: UserWarning: Output \"custom_variational_layer_1\" missing from loss dictionary. We assume this was done on purpose, and we will not be expecting any data to be passed to \"custom_variational_layer_1\" during training.\n" | |
] | |
} | |
], | |
"source": [ | |
"# input image dimensions\n", | |
"img_rows, img_cols, img_chns = image_width, image_height, 3\n", | |
"# number of convolutional filters to use\n", | |
"filters = 64\n", | |
"# convolution kernel size\n", | |
"num_conv = 3\n", | |
"\n", | |
"batch_size = 100\n", | |
"if K.image_data_format() == 'channels_first':\n", | |
" original_img_size = (img_chns, img_rows, img_cols)\n", | |
"else:\n", | |
" original_img_size = (img_rows, img_cols, img_chns)\n", | |
" \n", | |
"latent_dim = 2\n", | |
"intermediate_dim = 128\n", | |
"epsilon_std = 1.0\n", | |
"epochs = 5\n", | |
"\n", | |
"x = Input(shape=original_img_size)\n", | |
"conv_1 = Conv2D(img_chns,\n", | |
" kernel_size=(2, 2),\n", | |
" padding='same', activation='relu')(x)\n", | |
"conv_2 = Conv2D(filters,\n", | |
" kernel_size=(2, 2),\n", | |
" padding='same', activation='relu',\n", | |
" strides=(2, 2))(conv_1)\n", | |
"conv_3 = Conv2D(filters,\n", | |
" kernel_size=num_conv,\n", | |
" padding='same', activation='relu',\n", | |
" strides=1)(conv_2)\n", | |
"conv_4 = Conv2D(filters,\n", | |
" kernel_size=num_conv,\n", | |
" padding='same', activation='relu',\n", | |
" strides=1)(conv_3)\n", | |
"flat = Flatten()(conv_4)\n", | |
"hidden = Dense(intermediate_dim, activation='relu')(flat)\n", | |
"\n", | |
"z_mean = Dense(latent_dim)(hidden)\n", | |
"z_log_var = Dense(latent_dim)(hidden)\n", | |
"\n", | |
"\n", | |
"def sampling(args):\n", | |
" z_mean, z_log_var = args\n", | |
" epsilon = K.random_normal(shape=(K.shape(z_mean)[0], latent_dim),\n", | |
" mean=0., stddev=epsilon_std)\n", | |
" return z_mean + K.exp(z_log_var) * epsilon\n", | |
"\n", | |
"# note that \"output_shape\" isn't necessary with the TensorFlow backend\n", | |
"# so you could write `Lambda(sampling)([z_mean, z_log_var])`\n", | |
"z = Lambda(sampling, output_shape=(latent_dim,))([z_mean, z_log_var])\n", | |
"\n", | |
"# we instantiate these layers separately so as to reuse them later\n", | |
"decoder_hid = Dense(intermediate_dim, activation='relu')\n", | |
"decoder_upsample = Dense(filters * 14 * 14, activation='relu')\n", | |
"\n", | |
"if K.image_data_format() == 'channels_first':\n", | |
" output_shape = (batch_size, filters, 14, 14)\n", | |
"else:\n", | |
" output_shape = (batch_size, 14, 14, filters)\n", | |
"\n", | |
"decoder_reshape = Reshape(output_shape[1:])\n", | |
"decoder_deconv_1 = Conv2DTranspose(filters,\n", | |
" kernel_size=num_conv,\n", | |
" padding='same',\n", | |
" strides=1,\n", | |
" activation='relu')\n", | |
"decoder_deconv_2 = Conv2DTranspose(filters,\n", | |
" kernel_size=num_conv,\n", | |
" padding='same',\n", | |
" strides=1,\n", | |
" activation='relu')\n", | |
"if K.image_data_format() == 'channels_first':\n", | |
" output_shape = (batch_size, filters, 29, 29)\n", | |
"else:\n", | |
" output_shape = (batch_size, 29, 29, filters)\n", | |
"decoder_deconv_3_upsamp = Conv2DTranspose(filters,\n", | |
" kernel_size=(3, 3),\n", | |
" strides=(2, 2),\n", | |
" padding='valid',\n", | |
" activation='relu')\n", | |
"decoder_mean_squash = Conv2D(img_chns,\n", | |
" kernel_size=2,\n", | |
" padding='valid',\n", | |
" activation='sigmoid')\n", | |
"\n", | |
"hid_decoded = decoder_hid(z)\n", | |
"up_decoded = decoder_upsample(hid_decoded)\n", | |
"reshape_decoded = decoder_reshape(up_decoded)\n", | |
"deconv_1_decoded = decoder_deconv_1(reshape_decoded)\n", | |
"deconv_2_decoded = decoder_deconv_2(deconv_1_decoded)\n", | |
"x_decoded_relu = decoder_deconv_3_upsamp(deconv_2_decoded)\n", | |
"x_decoded_mean_squash = decoder_mean_squash(x_decoded_relu)\n", | |
"\n", | |
"\n", | |
"# Custom loss layer\n", | |
"class CustomVariationalLayer(Layer):\n", | |
" def __init__(self, **kwargs):\n", | |
" self.is_placeholder = True\n", | |
" super(CustomVariationalLayer, self).__init__(**kwargs)\n", | |
"\n", | |
" def vae_loss(self, x, x_decoded_mean_squash):\n", | |
" x = K.flatten(x)\n", | |
" x_decoded_mean_squash = K.flatten(x_decoded_mean_squash)\n", | |
" xent_loss = img_rows * img_cols * metrics.binary_crossentropy(x, x_decoded_mean_squash)\n", | |
" kl_loss = - 0.5 * K.mean(1 + z_log_var - K.square(z_mean) - K.exp(z_log_var), axis=-1)\n", | |
" return K.mean(xent_loss + kl_loss)\n", | |
"\n", | |
" def call(self, inputs):\n", | |
" x = inputs[0]\n", | |
" x_decoded_mean_squash = inputs[1]\n", | |
" loss = self.vae_loss(x, x_decoded_mean_squash)\n", | |
" self.add_loss(loss, inputs=inputs)\n", | |
" # We don't use this output.\n", | |
" return x\n", | |
"\n", | |
"\n", | |
"y = CustomVariationalLayer()([x, x_decoded_mean_squash])\n", | |
"vae = Model(x, y)\n", | |
"vae.compile(optimizer='rmsprop', loss=None)\n", | |
"vae.summary()\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.model_selection import train_test_split\n", | |
"x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.20, random_state=42)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"x_train = x_train.astype('float32') / 255.\n", | |
"x_train = x_train.reshape((x_train.shape[0],) + original_img_size)\n", | |
"x_test = x_test.astype('float32') / 255.\n", | |
"x_test = x_test.reshape((x_test.shape[0],) + original_img_size)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"x_train.shape: (8409, 90, 45, 3)\n" | |
] | |
} | |
], | |
"source": [ | |
"print('x_train.shape:', x_train.shape)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Train on 8409 samples, validate on 2103 samples\n", | |
"Epoch 1/5\n" | |
] | |
}, | |
{ | |
"ename": "InvalidArgumentError", | |
"evalue": "Incompatible shapes: [235200] vs. [1215000]\n\t [[Node: custom_variational_layer_1/logistic_loss/mul = Mul[T=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"](custom_variational_layer_1/Log, custom_variational_layer_1/Reshape)]]\n\t [[Node: loss/add/_153 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/device:CPU:0\", send_device=\"/job:localhost/replica:0/task:0/device:GPU:0\", send_device_incarnation=1, tensor_name=\"edge_1446_loss/add\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:CPU:0\"]()]]\n\nCaused by op 'custom_variational_layer_1/logistic_loss/mul', defined at:\n File \"/usr/lib/python3.5/runpy.py\", line 184, in _run_module_as_main\n \"__main__\", mod_spec)\n File \"/usr/lib/python3.5/runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py\", line 16, in <module>\n app.launch_new_instance()\n File \"/usr/local/lib/python3.5/dist-packages/traitlets/config/application.py\", line 658, in launch_instance\n app.start()\n File \"/usr/local/lib/python3.5/dist-packages/ipykernel/kernelapp.py\", line 478, in start\n self.io_loop.start()\n File \"/usr/local/lib/python3.5/dist-packages/zmq/eventloop/ioloop.py\", line 177, in start\n super(ZMQIOLoop, self).start()\n File \"/usr/local/lib/python3.5/dist-packages/tornado/ioloop.py\", line 888, in start\n handler_func(fd_obj, events)\n File \"/usr/local/lib/python3.5/dist-packages/tornado/stack_context.py\", line 277, in null_wrapper\n return fn(*args, **kwargs)\n File \"/usr/local/lib/python3.5/dist-packages/zmq/eventloop/zmqstream.py\", line 440, in _handle_events\n self._handle_recv()\n File \"/usr/local/lib/python3.5/dist-packages/zmq/eventloop/zmqstream.py\", line 472, in _handle_recv\n self._run_callback(callback, msg)\n File \"/usr/local/lib/python3.5/dist-packages/zmq/eventloop/zmqstream.py\", line 414, in _run_callback\n callback(*args, **kwargs)\n File \"/usr/local/lib/python3.5/dist-packages/tornado/stack_context.py\", line 277, in null_wrapper\n return fn(*args, **kwargs)\n File \"/usr/local/lib/python3.5/dist-packages/ipykernel/kernelbase.py\", line 281, in dispatcher\n return self.dispatch_shell(stream, msg)\n File \"/usr/local/lib/python3.5/dist-packages/ipykernel/kernelbase.py\", line 232, in dispatch_shell\n handler(stream, idents, msg)\n File \"/usr/local/lib/python3.5/dist-packages/ipykernel/kernelbase.py\", line 397, in execute_request\n user_expressions, allow_stdin)\n File \"/usr/local/lib/python3.5/dist-packages/ipykernel/ipkernel.py\", line 208, in do_execute\n res = shell.run_cell(code, store_history=store_history, silent=silent)\n File \"/usr/local/lib/python3.5/dist-packages/ipykernel/zmqshell.py\", line 533, in run_cell\n return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n File \"/usr/local/lib/python3.5/dist-packages/IPython/core/interactiveshell.py\", line 2728, in run_cell\n interactivity=interactivity, compiler=compiler, result=result)\n File \"/usr/local/lib/python3.5/dist-packages/IPython/core/interactiveshell.py\", line 2850, in run_ast_nodes\n if self.run_code(code, result):\n File \"/usr/local/lib/python3.5/dist-packages/IPython/core/interactiveshell.py\", line 2910, in run_code\n exec(code_obj, self.user_global_ns, self.user_ns)\n File \"<ipython-input-5-4edf2e92b8f5>\", line 117, in <module>\n y = CustomVariationalLayer()([x, x_decoded_mean_squash])\n File \"/usr/local/lib/python3.5/dist-packages/keras/engine/topology.py\", line 603, in __call__\n output = self.call(inputs, **kwargs)\n File \"<ipython-input-5-4edf2e92b8f5>\", line 111, in call\n loss = self.vae_loss(x, x_decoded_mean_squash)\n File \"<ipython-input-5-4edf2e92b8f5>\", line 104, in vae_loss\n xent_loss = img_rows * img_cols * metrics.binary_crossentropy(x, x_decoded_mean_squash)\n File \"/usr/local/lib/python3.5/dist-packages/keras/losses.py\", line 66, in binary_crossentropy\n return K.mean(K.binary_crossentropy(y_true, y_pred), axis=-1)\n File \"/usr/local/lib/python3.5/dist-packages/keras/backend/tensorflow_backend.py\", line 2953, in binary_crossentropy\n logits=output)\n File \"/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/nn_impl.py\", line 174, in sigmoid_cross_entropy_with_logits\n relu_logits - logits * labels,\n File \"/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/math_ops.py\", line 894, in binary_op_wrapper\n return func(x, y, name=name)\n File \"/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/math_ops.py\", line 1117, in _mul_dispatch\n return gen_math_ops._mul(x, y, name=name)\n File \"/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/gen_math_ops.py\", line 2726, in _mul\n \"Mul\", x=x, y=y, name=name)\n File \"/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/op_def_library.py\", line 787, in _apply_op_helper\n op_def=op_def)\n File \"/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py\", line 2956, in create_op\n op_def=op_def)\n File \"/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py\", line 1470, in __init__\n self._traceback = self._graph._extract_stack() # pylint: disable=protected-access\n\nInvalidArgumentError (see above for traceback): Incompatible shapes: [235200] vs. [1215000]\n\t [[Node: custom_variational_layer_1/logistic_loss/mul = Mul[T=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"](custom_variational_layer_1/Log, custom_variational_layer_1/Reshape)]]\n\t [[Node: loss/add/_153 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/device:CPU:0\", send_device=\"/job:localhost/replica:0/task:0/device:GPU:0\", send_device_incarnation=1, tensor_name=\"edge_1446_loss/add\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:CPU:0\"]()]]\n", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mInvalidArgumentError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_call\u001b[0;34m(self, fn, *args)\u001b[0m\n\u001b[1;32m 1322\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1323\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1324\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mOpError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_run_fn\u001b[0;34m(session, feed_dict, fetch_list, target_list, options, run_metadata)\u001b[0m\n\u001b[1;32m 1301\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_list\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1302\u001b[0;31m status, run_metadata)\n\u001b[0m\u001b[1;32m 1303\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/errors_impl.py\u001b[0m in \u001b[0;36m__exit__\u001b[0;34m(self, type_arg, value_arg, traceback_arg)\u001b[0m\n\u001b[1;32m 472\u001b[0m \u001b[0mcompat\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_text\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mc_api\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_Message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstatus\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstatus\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 473\u001b[0;31m c_api.TF_GetCode(self.status.status))\n\u001b[0m\u001b[1;32m 474\u001b[0m \u001b[0;31m# Delete the underlying status object from memory otherwise it stays alive\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;31mInvalidArgumentError\u001b[0m: Incompatible shapes: [235200] vs. [1215000]\n\t [[Node: custom_variational_layer_1/logistic_loss/mul = Mul[T=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"](custom_variational_layer_1/Log, custom_variational_layer_1/Reshape)]]\n\t [[Node: loss/add/_153 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/device:CPU:0\", send_device=\"/job:localhost/replica:0/task:0/device:GPU:0\", send_device_incarnation=1, tensor_name=\"edge_1446_loss/add\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:CPU:0\"]()]]", | |
"\nDuring handling of the above exception, another exception occurred:\n", | |
"\u001b[0;31mInvalidArgumentError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<ipython-input-9-7119ffe563b8>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mepochs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mepochs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mbatch_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbatch_size\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m validation_data=(x_test, None))\n\u001b[0m", | |
"\u001b[0;32m/usr/local/lib/python3.5/dist-packages/keras/engine/training.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)\u001b[0m\n\u001b[1;32m 1655\u001b[0m \u001b[0minitial_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minitial_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1656\u001b[0m \u001b[0msteps_per_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msteps_per_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1657\u001b[0;31m validation_steps=validation_steps)\n\u001b[0m\u001b[1;32m 1658\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1659\u001b[0m def evaluate(self, x=None, y=None,\n", | |
"\u001b[0;32m/usr/local/lib/python3.5/dist-packages/keras/engine/training.py\u001b[0m in \u001b[0;36m_fit_loop\u001b[0;34m(self, f, ins, out_labels, batch_size, epochs, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps)\u001b[0m\n\u001b[1;32m 1211\u001b[0m \u001b[0mbatch_logs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'size'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_ids\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1212\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_batch_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_index\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_logs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1213\u001b[0;31m \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mins_batch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1214\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1215\u001b[0m \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m/usr/local/lib/python3.5/dist-packages/keras/backend/tensorflow_backend.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, inputs)\u001b[0m\n\u001b[1;32m 2355\u001b[0m \u001b[0msession\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_session\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2356\u001b[0m updated = session.run(fetches=fetches, feed_dict=feed_dict,\n\u001b[0;32m-> 2357\u001b[0;31m **self.session_kwargs)\n\u001b[0m\u001b[1;32m 2358\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mupdated\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2359\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 887\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 888\u001b[0m result = self._run(None, fetches, feed_dict, options_ptr,\n\u001b[0;32m--> 889\u001b[0;31m run_metadata_ptr)\n\u001b[0m\u001b[1;32m 890\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 891\u001b[0m \u001b[0mproto_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_run\u001b[0;34m(self, handle, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 1118\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfinal_fetches\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mfinal_targets\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mhandle\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mfeed_dict_tensor\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1119\u001b[0m results = self._do_run(handle, final_targets, final_fetches,\n\u001b[0;32m-> 1120\u001b[0;31m feed_dict_tensor, options, run_metadata)\n\u001b[0m\u001b[1;32m 1121\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1122\u001b[0m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_run\u001b[0;34m(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 1315\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhandle\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1316\u001b[0m return self._do_call(_run_fn, self._session, feeds, fetches, targets,\n\u001b[0;32m-> 1317\u001b[0;31m options, run_metadata)\n\u001b[0m\u001b[1;32m 1318\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_do_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_prun_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_session\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeeds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetches\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_call\u001b[0;34m(self, fn, *args)\u001b[0m\n\u001b[1;32m 1334\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1335\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1336\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnode_def\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mop\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmessage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1337\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1338\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_extend_graph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;31mInvalidArgumentError\u001b[0m: Incompatible shapes: [235200] vs. [1215000]\n\t [[Node: custom_variational_layer_1/logistic_loss/mul = Mul[T=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"](custom_variational_layer_1/Log, custom_variational_layer_1/Reshape)]]\n\t [[Node: loss/add/_153 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/device:CPU:0\", send_device=\"/job:localhost/replica:0/task:0/device:GPU:0\", send_device_incarnation=1, tensor_name=\"edge_1446_loss/add\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:CPU:0\"]()]]\n\nCaused by op 'custom_variational_layer_1/logistic_loss/mul', defined at:\n File \"/usr/lib/python3.5/runpy.py\", line 184, in _run_module_as_main\n \"__main__\", mod_spec)\n File \"/usr/lib/python3.5/runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py\", line 16, in <module>\n app.launch_new_instance()\n File \"/usr/local/lib/python3.5/dist-packages/traitlets/config/application.py\", line 658, in launch_instance\n app.start()\n File \"/usr/local/lib/python3.5/dist-packages/ipykernel/kernelapp.py\", line 478, in start\n self.io_loop.start()\n File \"/usr/local/lib/python3.5/dist-packages/zmq/eventloop/ioloop.py\", line 177, in start\n super(ZMQIOLoop, self).start()\n File \"/usr/local/lib/python3.5/dist-packages/tornado/ioloop.py\", line 888, in start\n handler_func(fd_obj, events)\n File \"/usr/local/lib/python3.5/dist-packages/tornado/stack_context.py\", line 277, in null_wrapper\n return fn(*args, **kwargs)\n File \"/usr/local/lib/python3.5/dist-packages/zmq/eventloop/zmqstream.py\", line 440, in _handle_events\n self._handle_recv()\n File \"/usr/local/lib/python3.5/dist-packages/zmq/eventloop/zmqstream.py\", line 472, in _handle_recv\n self._run_callback(callback, msg)\n File \"/usr/local/lib/python3.5/dist-packages/zmq/eventloop/zmqstream.py\", line 414, in _run_callback\n callback(*args, **kwargs)\n File \"/usr/local/lib/python3.5/dist-packages/tornado/stack_context.py\", line 277, in null_wrapper\n return fn(*args, **kwargs)\n File \"/usr/local/lib/python3.5/dist-packages/ipykernel/kernelbase.py\", line 281, in dispatcher\n return self.dispatch_shell(stream, msg)\n File \"/usr/local/lib/python3.5/dist-packages/ipykernel/kernelbase.py\", line 232, in dispatch_shell\n handler(stream, idents, msg)\n File \"/usr/local/lib/python3.5/dist-packages/ipykernel/kernelbase.py\", line 397, in execute_request\n user_expressions, allow_stdin)\n File \"/usr/local/lib/python3.5/dist-packages/ipykernel/ipkernel.py\", line 208, in do_execute\n res = shell.run_cell(code, store_history=store_history, silent=silent)\n File \"/usr/local/lib/python3.5/dist-packages/ipykernel/zmqshell.py\", line 533, in run_cell\n return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n File \"/usr/local/lib/python3.5/dist-packages/IPython/core/interactiveshell.py\", line 2728, in run_cell\n interactivity=interactivity, compiler=compiler, result=result)\n File \"/usr/local/lib/python3.5/dist-packages/IPython/core/interactiveshell.py\", line 2850, in run_ast_nodes\n if self.run_code(code, result):\n File \"/usr/local/lib/python3.5/dist-packages/IPython/core/interactiveshell.py\", line 2910, in run_code\n exec(code_obj, self.user_global_ns, self.user_ns)\n File \"<ipython-input-5-4edf2e92b8f5>\", line 117, in <module>\n y = CustomVariationalLayer()([x, x_decoded_mean_squash])\n File \"/usr/local/lib/python3.5/dist-packages/keras/engine/topology.py\", line 603, in __call__\n output = self.call(inputs, **kwargs)\n File \"<ipython-input-5-4edf2e92b8f5>\", line 111, in call\n loss = self.vae_loss(x, x_decoded_mean_squash)\n File \"<ipython-input-5-4edf2e92b8f5>\", line 104, in vae_loss\n xent_loss = img_rows * img_cols * metrics.binary_crossentropy(x, x_decoded_mean_squash)\n File \"/usr/local/lib/python3.5/dist-packages/keras/losses.py\", line 66, in binary_crossentropy\n return K.mean(K.binary_crossentropy(y_true, y_pred), axis=-1)\n File \"/usr/local/lib/python3.5/dist-packages/keras/backend/tensorflow_backend.py\", line 2953, in binary_crossentropy\n logits=output)\n File \"/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/nn_impl.py\", line 174, in sigmoid_cross_entropy_with_logits\n relu_logits - logits * labels,\n File \"/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/math_ops.py\", line 894, in binary_op_wrapper\n return func(x, y, name=name)\n File \"/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/math_ops.py\", line 1117, in _mul_dispatch\n return gen_math_ops._mul(x, y, name=name)\n File \"/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/gen_math_ops.py\", line 2726, in _mul\n \"Mul\", x=x, y=y, name=name)\n File \"/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/op_def_library.py\", line 787, in _apply_op_helper\n op_def=op_def)\n File \"/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py\", line 2956, in create_op\n op_def=op_def)\n File \"/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py\", line 1470, in __init__\n self._traceback = self._graph._extract_stack() # pylint: disable=protected-access\n\nInvalidArgumentError (see above for traceback): Incompatible shapes: [235200] vs. [1215000]\n\t [[Node: custom_variational_layer_1/logistic_loss/mul = Mul[T=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:GPU:0\"](custom_variational_layer_1/Log, custom_variational_layer_1/Reshape)]]\n\t [[Node: loss/add/_153 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/device:CPU:0\", send_device=\"/job:localhost/replica:0/task:0/device:GPU:0\", send_device_incarnation=1, tensor_name=\"edge_1446_loss/add\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/device:CPU:0\"]()]]\n" | |
] | |
} | |
], | |
"source": [ | |
"vae.fit(x_train,\n", | |
" shuffle=True,\n", | |
" epochs=epochs,\n", | |
" batch_size=batch_size,\n", | |
" validation_data=(x_test, None))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"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.5.2" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment