Skip to content

Instantly share code, notes, and snippets.

@sedflix
Created December 18, 2017 09:52
Show Gist options
  • Save sedflix/9d23bedc8f6370b5578067757af11463 to your computer and use it in GitHub Desktop.
Save sedflix/9d23bedc8f6370b5578067757af11463 to your computer and use it in GitHub Desktop.
variational_autoencoder_deconv from examples
Display the source blob
Display the rendered blob
Raw
{
"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