Reputation: 67
The code I founded here: https://github.com/malhotraa/carvana-image-masking-challenge/blob/master/notebooks/model_cnn.ipynb and I try to see the result using my own pictures but it seem is not working.
def down(filters, input_):
down_ = Conv2D(filters, (3, 3), padding='same')(input_)
down_ = BatchNormalization(epsilon=1e-4)(down_)
down_ = Activation('relu')(down_)
down_ = Conv2D(filters, (3, 3), padding='same')(down_)
down_ = BatchNormalization(epsilon=1e-4)(down_)
down_res = Activation('relu')(down_)
down_pool = MaxPooling2D((2, 2), strides=(2, 2))(down_)
return down_pool, down_res
def up(filters, input_, down_):
up_ = UpSampling2D((2, 2))(input_)
up_ = concatenate([down_, up_], axis=3)
up_ = Conv2D(filters, (3, 3), padding='same')(up_)
up_ = BatchNormalization(epsilon=1e-4)(up_)
up_ = Activation('relu')(up_)
up_ = Conv2D(filters, (3, 3), padding='same')(up_)
up_ = BatchNormalization(epsilon=1e-4)(up_)
up_ = Activation('relu')(up_)
up_ = Conv2D(filters, (3, 3), padding='same')(up_)
up_ = BatchNormalization(epsilon=1e-4)(up_)
up_ = Activation('relu')(up_)
return up_
def cnn_model(input_shape=[64,64,3], num_classes=1):
inputs = Input(shape=input_shape)
with tf.device('/gpu:0'):
#down0b, down0b_res = down(8, inputs)
down0a, down0a_res = down(32, inputs)
down0, down0_res = down(64, down0a)
down1, down1_res = down(128, down0)
down2, down2_res = down(256, down1)
down3, down3_res = down(512, down2)
down4, down4_res = down(1024, down3)
center = Conv2D(1024, (3, 3), padding='same')(down4)
center = BatchNormalization(epsilon=1e-4)(center)
center = Activation('relu')(center)
with tf.device('/gpu:1'):
center = Conv2D(1024, (3, 3), padding='same')(center)
center = BatchNormalization(epsilon=1e-4)(center)
center = Activation('relu')(center)
up4 = up(1024, center, down4_res)
up3 = up(512, up4, down3_res)
up2 = up(256, up3, down2_res)
up1 = up(128, up2, down1_res)
up0 = up(64, up1, down0_res)
up0a = up(32, up0, down0a_res)
#up0b = up(8, up0a, down0b_res)
classify = Conv2D(num_classes, (1, 1), activation='sigmoid', name='final_layer')(up0a)
model = Model(inputs=inputs, outputs=classify)
return model
This is an error that I can not understand. I am using python and neural network for a short time and I have problem understanding them.
---------------------------------------------------------------------------
InvalidArgumentError Traceback (most recent call last)
~/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
1326 try:
-> 1327 return fn(*args)
1328 except errors.OpError as e:
~/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/client/session.py in _run_fn(feed_dict, fetch_list, target_list, options, run_metadata)
1311 return self._call_tf_sessionrun(
-> 1312 options, feed_dict, fetch_list, target_list, run_metadata)
1313
~/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/client/session.py in _call_tf_sessionrun(self, options, feed_dict, fetch_list, target_list, run_metadata)
1419 self._session, options, feed_dict, fetch_list, target_list,
-> 1420 status, run_metadata)
1421
~/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/framework/errors_impl.py in __exit__(self, type_arg, value_arg, traceback_arg)
515 compat.as_text(c_api.TF_Message(self.status.status)),
--> 516 c_api.TF_GetCode(self.status.status))
517 # Delete the underlying status object from memory otherwise it stays alive
InvalidArgumentError: Incompatible shapes: [36864] vs. [12288]
[[Node: training/Adam/gradients/loss_1/final_layer_loss/mul_grad/BroadcastGradientArgs = BroadcastGradientArgs[T=DT_INT32, _class=["loc:@loss_1/final_layer_loss/mul"], _device="/job:localhost/replica:0/task:0/device:CPU:0"](training/Adam/gradients/loss_1/final_layer_loss/mul_grad/Shape, training/Adam/gradients/loss_1/final_layer_loss/mul_grad/Shape_1)]]
During handling of the above exception, another exception occurred:
InvalidArgumentError Traceback (most recent call last)
<ipython-input-12-f0dc1bb0c6be> in <module>()
6 verbose = 1,
7 validation_data = valid_generator,
----> 8 validation_steps = VALIDATION_STEPS)
9
10 model_json=model.to_json()
~/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/keras/legacy/interfaces.py in wrapper(*args, **kwargs)
89 warnings.warn('Update your `' + object_name +
90 '` call to the Keras 2 API: ' + signature, stacklevel=2)
---> 91 return func(*args, **kwargs)
92 wrapper._original_function = func
93 return wrapper
~/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/keras/engine/training.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
2228 outs = self.train_on_batch(x, y,
2229 sample_weight=sample_weight,
-> 2230 class_weight=class_weight)
2231
2232 if not isinstance(outs, list):
~/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/keras/engine/training.py in train_on_batch(self, x, y, sample_weight, class_weight)
1881 ins = x + y + sample_weights
1882 self._make_train_function()
-> 1883 outputs = self.train_function(ins)
1884 if len(outputs) == 1:
1885 return outputs[0]
~/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py in __call__(self, inputs)
2480 session = get_session()
2481 updated = session.run(fetches=fetches, feed_dict=feed_dict,
-> 2482 **self.session_kwargs)
2483 return updated[:len(self.outputs)]
2484
~/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/client/session.py in run(self, fetches, feed_dict, options, run_metadata)
903 try:
904 result = self._run(None, fetches, feed_dict, options_ptr,
--> 905 run_metadata_ptr)
906 if run_metadata:
907 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)
~/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/client/session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
1138 if final_fetches or final_targets or (handle and feed_dict_tensor):
1139 results = self._do_run(handle, final_targets, final_fetches,
-> 1140 feed_dict_tensor, options, run_metadata)
1141 else:
1142 results = []
~/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/client/session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
1319 if handle is None:
1320 return self._do_call(_run_fn, feeds, fetches, targets, options,
-> 1321 run_metadata)
1322 else:
1323 return self._do_call(_prun_fn, handle, feeds, fetches)
~/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
1338 except KeyError:
1339 pass
-> 1340 raise type(e)(node_def, op, message)
1341
1342 def _extend_graph(self):
InvalidArgumentError: Incompatible shapes: [36864] vs. [12288]
[[Node: training/Adam/gradients/loss_1/final_layer_loss/mul_grad/BroadcastGradientArgs = BroadcastGradientArgs[T=DT_INT32, _class=["loc:@loss_1/final_layer_loss/mul"], _device="/job:localhost/replica:0/task:0/device:CPU:0"](training/Adam/gradients/loss_1/final_layer_loss/mul_grad/Shape, training/Adam/gradients/loss_1/final_layer_loss/mul_grad/Shape_1)]]
Caused by op 'training/Adam/gradients/loss_1/final_layer_loss/mul_grad/BroadcastGradientArgs', defined at:
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/runpy.py", line 184, in _run_module_as_main
"__main__", mod_spec)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/ipykernel_launcher.py", line 16, in <module>
app.launch_new_instance()
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/traitlets/config/application.py", line 658, in launch_instance
app.start()
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/ipykernel/kernelapp.py", line 486, in start
self.io_loop.start()
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tornado/platform/asyncio.py", line 127, in start
self.asyncio_loop.run_forever()
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/asyncio/base_events.py", line 345, in run_forever
self._run_once()
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/asyncio/base_events.py", line 1312, in _run_once
handle._run()
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/asyncio/events.py", line 125, in _run
self._callback(*self._args)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tornado/platform/asyncio.py", line 117, in _handle_events
handler_func(fileobj, events)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tornado/stack_context.py", line 276, in null_wrapper
return fn(*args, **kwargs)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py", line 450, in _handle_events
self._handle_recv()
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py", line 480, in _handle_recv
self._run_callback(callback, msg)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py", line 432, in _run_callback
callback(*args, **kwargs)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tornado/stack_context.py", line 276, in null_wrapper
return fn(*args, **kwargs)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 283, in dispatcher
return self.dispatch_shell(stream, msg)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 233, in dispatch_shell
handler(stream, idents, msg)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 399, in execute_request
user_expressions, allow_stdin)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/ipykernel/ipkernel.py", line 208, in do_execute
res = shell.run_cell(code, store_history=store_history, silent=silent)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/ipykernel/zmqshell.py", line 537, in run_cell
return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2662, in run_cell
raw_cell, store_history, silent, shell_futures)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2785, in _run_cell
interactivity=interactivity, compiler=compiler, result=result)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2903, in run_ast_nodes
if self.run_code(code, result):
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2963, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-12-f0dc1bb0c6be>", line 8, in <module>
validation_steps = VALIDATION_STEPS)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/keras/legacy/interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/keras/engine/training.py", line 2080, in fit_generator
self._make_train_function()
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/keras/engine/training.py", line 992, in _make_train_function
loss=self.total_loss)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/keras/legacy/interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/keras/optimizers.py", line 445, in get_updates
grads = self.get_gradients(loss, params)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/keras/optimizers.py", line 78, in get_gradients
grads = K.gradients(loss, params)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py", line 2519, in gradients
return tf.gradients(loss, variables, colocate_gradients_with_ops=True)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/ops/gradients_impl.py", line 488, in gradients
gate_gradients, aggregation_method, stop_gradients)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/ops/gradients_impl.py", line 625, in _GradientsHelper
lambda: grad_fn(op, *out_grads))
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/ops/gradients_impl.py", line 379, in _MaybeCompile
return grad_fn() # Exit early
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/ops/gradients_impl.py", line 625, in <lambda>
lambda: grad_fn(op, *out_grads))
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/ops/math_grad.py", line 881, in _MulGrad
rx, ry = gen_array_ops._broadcast_gradient_args(sx, sy)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/ops/gen_array_ops.py", line 671, in _broadcast_gradient_args
"BroadcastGradientArgs", s0=s0, s1=s1, name=name)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper
op_def=op_def)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 3290, in create_op
op_def=op_def)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 1654, in __init__
self._traceback = self._graph._extract_stack() # pylint: disable=protected-access
...which was originally created as op 'loss_1/final_layer_loss/mul', defined at:
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/runpy.py", line 184, in _run_module_as_main
"__main__", mod_spec)
[elided 20 identical lines from previous traceback]
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2785, in _run_cell
interactivity=interactivity, compiler=compiler, result=result)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2909, in run_ast_nodes
if self.run_code(code, result):
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2963, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-11-76ea40ddc2d1>", line 14, in <module>
model.compile(loss=bce_dice_loss, optimizer=Adam(lr=1e-4), metrics=[dice_coef])
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/keras/engine/training.py", line 830, in compile
sample_weight, mask)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/keras/engine/training.py", line 429, in weighted
score_array = fn(y_true, y_pred)
File "<ipython-input-10-7fcc135cc389>", line 12, in bce_dice_loss
return binary_crossentropy(y_true, y_pred) + dice_coef_loss(y_true, y_pred)
File "<ipython-input-10-7fcc135cc389>", line 9, in dice_coef_loss
return 1-dice_coef(y_true, y_pred)
File "<ipython-input-10-7fcc135cc389>", line 5, in dice_coef
intersection = K.sum(y_true_f * y_pred_f)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/ops/math_ops.py", line 971, in binary_op_wrapper
return func(x, y, name=name)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/ops/math_ops.py", line 1198, in _mul_dispatch
return gen_math_ops.mul(x, y, name=name)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/ops/gen_math_ops.py", line 4689, in mul
"Mul", x=x, y=y, name=name)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper
op_def=op_def)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 3290, in create_op
op_def=op_def)
File "/home/ioana/anaconda3/envs/carnd-term1/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 1654, in __init__
self._traceback = self._graph._extract_stack() # pylint: disable=protected-access
InvalidArgumentError (see above for traceback): Incompatible shapes: [36864] vs. [12288]
[[Node: training/Adam/gradients/loss_1/final_layer_loss/mul_grad/BroadcastGradientArgs = BroadcastGradientArgs[T=DT_INT32, _class=["loc:@loss_1/final_layer_loss/mul"], _device="/job:localhost/replica:0/task:0/device:CPU:0"](training/Adam/gradients/loss_1/final_layer_loss/mul_grad/Shape, training/Adam/gradients/loss_1/final_layer_loss/mul_grad/Shape_1)]]
My question is how can i resolve this error and make it work and if it has something to do with the packages I use.
Upvotes: 1
Views: 3672
Reputation: 156
This type of error occurs whenever there's a discrepancy in the shape of layers which you are using for calculating loss, as highlighted in the stack-trace [36864] vs. [12288]
. You should probably double check the shape of your model output and the shape of expected output(flattened).
A good practice, which I have generally found helpful while working with large networks is try to see the output shape produced by every layer, or do a model.summary()
, good for debugging and following through the output of your network.
Upvotes: 1