Я работаю с нестандартной потерей в модели и получаю эту ошибку
tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes: [32,32] vs. [32,32,912]
[[{{node LogicalAnd}}]]
Это странно, но я знаю, что это проблема с input_b, который имеет форму (331, 912),Поэтому я посмотрел на форму моей модели, а input_b там нет. РЕДАКТИРОВАТЬ Так что, если исправлена проблема со вторым входом не отображается. Но я все еще получаю ту же ошибку. Так что я думал об этом, потому что второй вход пропал был неправильным.
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_a (InputLayer) (None, 224, 224, 3) 0
__________________________________________________________________________________________________
input_b (InputLayer) (None, 912) 0
__________________________________________________________________________________________________
model_1 (Model) (None, 2048) 20861480 input_a[0][0]
__________________________________________________________________________________________________
concatenate_1 (Concatenate) (None, 2960) 0 input_b[0][0]
model_1[1][0]
==================================================================================================
Total params: 20,861,480
Trainable params: 20,806,952
Non-trainable params: 54,528
__________________________________________________________________________________________________
None
Так что я не знаю, что происходит с этой ошибкой. Тогда я думаю, что это связано с отсутствием входного слоя, но так ли это? Вот мой код модели
# Define new model
input_a = Input(shape=(224, 224, 3), name='input_a')
input_b = Input(shape=(912,), name='input_b')
embeddings = base_network(input_a) # loaded from a fine tuned model
final_data = Concatenate(axis=1)([input_b, embeddings])
batch_loss = batch_hard_triplet_loss(embeddings, input_b, 0.4, False)
model = Model(inputs=[input_a, input_b], outputs=final_data)
# Compile model
model.compile(loss=batch_loss, optimizer='adam')
Полная ошибка Журналы
Preocessing data...
Shape of X train
(331, 224, 224, 3)
Shape of Y train
(331, 912)
(164, 224, 224, 3)
(164, 912)
Finished processing data.
Initializing Model...
WARNING:tensorflow:From C:/Users/matthew.millar/Documents/reid/ReIDFullProject/AdvancedTensorflowTripleLoss.py:47: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.cast instead.
Model Created.
Started Training model...
WARNING:tensorflow:From C:\Users\matthew.millar\Anaconda3\envs\tf\lib\site-packages\tensorflow\python\ops\math_grad.py:102: div (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Deprecated in favor of operator or tf.math.divide.
Train on 332 samples, validate on 164 samples
Epoch 1/10
Traceback (most recent call last):
File "C:/Users/matthew.millar/Documents/reid/ReIDFullProject/AdvancedTensorflowTripleLoss.py", line 288, in <module>
callbacks=callbacks_list)
File "C:\Users\matthew.millar\Anaconda3\envs\tf\lib\site-packages\keras\engine\training.py", line 1039, in fit
validation_steps=validation_steps)
File "C:\Users\matthew.millar\Anaconda3\envs\tf\lib\site-packages\keras\engine\training_arrays.py", line 199, in fit_loop
outs = f(ins_batch)
File "C:\Users\matthew.millar\Anaconda3\envs\tf\lib\site-packages\keras\backend\tensorflow_backend.py", line 2715, in __call__
return self._call(inputs)
File "C:\Users\matthew.millar\Anaconda3\envs\tf\lib\site-packages\keras\backend\tensorflow_backend.py", line 2675, in _call
fetched = self._callable_fn(*array_vals)
File "C:\Users\matthew.millar\Anaconda3\envs\tf\lib\site-packages\tensorflow\python\client\session.py", line 1439, in __call__
run_metadata_ptr)
File "C:\Users\matthew.millar\Anaconda3\envs\tf\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 528, in __exit__
c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes: [32,32] vs. [32,32,912]
[[{{node LogicalAnd}}]]
Вот функция подгонки, чтобы вы знали, как я отправляю данные в
history = model.fit(x=[x_train, y_train], y=dummy_y_train,
epochs=EPOCH,
batch_size=BATCHSIZE,
shuffle=True,
validation_data=([x_test, y_test], dummy_y_test),
verbose=1,
callbacks=callbacks_list)