Ошибка значения: Ввод 0 несовместим со слоем resnet50: ожидаемая форма=(Нет, 180, 180, 3), найденная форма=(180, 180, 3)

#tensorflow-federated

Вопрос:

С TFF 0.18 я обнаружил эту проблему :

 images, labels = next(img_gen.flow_from_directory(path0,target_size=(180, 180), batch_size = 2,class_mode=None))
sample_batch = (images,labels)  # assumes images and labels are np.ndarray
input_spec = tf.nest.map_structure(tensor_spec_from_ndarray, sample_batch)
 

вот вывод input_spec

 (TensorSpec(shape=(180, 180, 3), dtype=tf.float32, name=None), TensorSpec(shape=(180, 180, 3), dtype=tf.float32, name=None))
 

А вот и моя модель:

 model = tf.keras.applications.ResNet50(include_top=False, weights=None, input_tensor=tf.keras.Input(shape=(180, 180, 3)), pooling=None)
 

Ответ №1:

На высоком уровне сообщение об ошибке говорит о том, что тензоры не одного ранга (4 против 3).

expected shape=(None, 180, 180, 3)

Ожидаемая форма имеет ведущий None размер, который является размером пакета.

found shape=(180, 180, 3)

Найденная фигура имеет только ранг 3, без размерности пакета.

Это несколько удивительно из кода в вопросе, в котором есть строка batch_size = 2 . Я бы углубился в то, как этот параметр используется img_gen.flow_from_directory() функцией, чтобы узнать, возможно ли получение пакетного измерения.