tr_pairs, tr_y = create_pairs(pic_dir, 'train', input_dim)
te_pairs, te_y = create_pairs(pic_dir, 'test', input_dim)
TR_P (2038, 2, 224, 224, 3)
TE_P (2266, 2, 224, 224, 3)
model = Model([input_a, input_b], distance)
rms = RMSprop()
model.compile(loss=contrastive_loss, optimizer=rms)
model.fit([tr_pairs[:, 0], tr_pairs[:, 1]], tr_y,
batch_size=2,
epochs=4,
validation_data=([te_pairs[:, 0], te_pairs[:, 1]], te_y))
File "siamese.py", line 157, in <module>
validation_data=([te_pairs[:, 0], te_pairs[:, 1]], te_y))
Caused by op u'loss/lambda_1_loss/mul', defined at:
File "siamese.py", line 153, in <module>
model.compile(loss=contrastive_loss, optimizer=rms)
File "/Users/pp/tensorflow/lib/python2.7/site-packages/keras/engine/training.py", line 852, in compile
sample_weight, mask)
File "/Users/pp/tensorflow/lib/python2.7/site-packages/keras/engine/training.py", line 453, in weighted
score_array = fn(y_true, y_pred)
File "siamese.py", line 47, in contrastive_loss
return K.mean(y_true * K.square(y_pred) +
File "/Users/pp/tensorflow/lib/python2.7/site-packages/tensorflow/python/ops/math_ops.py", line 865, in binary_op_wrapper
return func(x, y, name=name)
File "/Users/pp/tensorflow/lib/python2.7/site-packages/tensorflow/python/ops/math_ops.py", line 1088, in _mul_dispatch
return gen_math_ops._mul(x, y, name=name)
File "/Users/pp/tensorflow/lib/python2.7/site-packages/tensorflow/python/ops/gen_math_ops.py", line 1449, in _mul
result = _op_def_lib.apply_op("Mul", x=x, y=y, name=name)
File "/Users/pp/tensorflow/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 767, in apply_op
op_def=op_def)
File "/Users/pp/tensorflow/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 2630, in create_op
original_op=self._default_original_op, op_def=op_def)
File "/Users/pp/tensorflow/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1204, in __init__
self._traceback = self._graph._extract_stack() # pylint: disable=protected-access
InvalidArgumentError (see above for traceback): Incompatible shapes: [2,1] vs. [2,1,7,512]
[[Node: loss/lambda_1_loss/mul = Mul[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"](_arg_lambda_1_target_0_3, loss/lambda_1_loss/Square)]]
processed_a = base_network(input_a)
processed_b = base_network(input_b)
flat_a = Flatten()(processed_a)
flat_b = Flatten()(processed_b)
distance = Lambda(euclidean_distance,
output_shape=eucl_dist_output_shape)([flat_a, flat_b])
df = Dense(1, activation='sigmoid')(distance)
model = Model([input_a, input_b], df)