Несовместимый размер матрицы: в [0]: [1270], в [1]: [480,48] [[{{Узел плотный / MatMul}}]] Керас - PullRequest
0 голосов
/ 30 ноября 2019

Я работаю над проектом, в котором мне нужно предсказать, есть ли транспортное средство на изображении или нет. Для этого я использую модель, уже обученную в Caffe, которая преобразовала веса в Керас и определила слои на основе прототипа. После правильной загрузки весов и определения прогнозируемого изображения с соответствующей формой я передал его функции прогнозирования, что привело к ошибке несовместимого размера матрицы. Возможно, я допустил ошибку при настройке модели, но после нескольких часов поиска и поиска решения я не могу ее найти.

import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation, Dropout, Flatten, Conv2D, MaxPooling2D, Dropout, BatchNormalization
from tensorflow.keras.initializers import glorot_uniform, Constant
import numpy as np
np.random.seed(1000)

model = Sequential()

model.add(Conv2D(filters=16, activation='relu', input_shape=(224, 224, 3), kernel_size=(11, 11), strides=(4,4)))

model.add(MaxPooling2D(pool_size=(3, 3), strides=(2, 2)))

model.add(Conv2D(filters=20, activation='relu', kernel_size=(5, 5), strides=(1, 1)))

model.add(MaxPooling2D(pool_size=(3, 3), strides=(2, 2)))

model.add(Conv2D(filters=30, activation='relu', kernel_size=(3, 3), strides=(1, 1)))

model.add(MaxPooling2D(pool_size=(3, 3), strides=(2, 2)))

model.add(Flatten())

model.add(Dense(48, activation='relu', input_shape=(224*224*3,)))

model.add(Dense(2, activation='softmax'))

model.summary()

model.load_weights('CNRPARK-EXT-Keras.h5')

import cv2
imgPath = "../dataset150x150/A/"
imgBusyPath = imgPath + "busy/"
img = cv2.imread(imgBusyPath + "20150703_0805_8.jpg")

import matplotlib.pyplot as plt
%matplotlib inline
plt.imshow(img)

img = cv2.resize(img, (224, 224))
img = img.reshape(-1, 224, 224, 3)
img.shape

model.predict(img)

Ошибка при выполнении прогноза:

InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-10-a59b8e0bb15a> in <module>
----> 1 model.predict(img)

/opt/anaconda3/envs/PFG/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py in predict(self, x, batch_size, verbose, steps, callbacks, max_queue_size, workers, use_multiprocessing)
    906         max_queue_size=max_queue_size,
    907         workers=workers,
--> 908         use_multiprocessing=use_multiprocessing)
    909 
    910   def reset_metrics(self):

/opt/anaconda3/envs/PFG/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_arrays.py in predict(self, model, x, batch_size, verbose, steps, callbacks, **kwargs)
    721         verbose=verbose,
    722         steps=steps,
--> 723         callbacks=callbacks)

/opt/anaconda3/envs/PFG/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_arrays.py in model_iteration(model, inputs, targets, sample_weights, batch_size, epochs, verbose, callbacks, val_inputs, val_targets, val_sample_weights, shuffle, initial_epoch, steps_per_epoch, validation_steps, validation_freq, mode, validation_in_fit, prepared_feed_values_from_dataset, steps_name, **kwargs)
    392 
    393         # Get outputs.
--> 394         batch_outs = f(ins_batch)
    395         if not isinstance(batch_outs, list):
    396           batch_outs = [batch_outs]

/opt/anaconda3/envs/PFG/lib/python3.7/site-packages/tensorflow_core/python/keras/backend.py in __call__(self, inputs)
   3474 
   3475     fetched = self._callable_fn(*array_vals,
-> 3476                                 run_metadata=self.run_metadata)
   3477     self._call_fetch_callbacks(fetched[-len(self._fetches):])
   3478     output_structure = nest.pack_sequence_as(

/opt/anaconda3/envs/PFG/lib/python3.7/site-packages/tensorflow_core/python/client/session.py in __call__(self, *args, **kwargs)
   1470         ret = tf_session.TF_SessionRunCallable(self._session._session,
   1471                                                self._handle, args,
-> 1472                                                run_metadata_ptr)
   1473         if run_metadata:
   1474           proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

InvalidArgumentError: Matrix size-incompatible: In[0]: [1,270], In[1]: [480,48]
     [[{{node dense/MatMul}}]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...