Несовместимая форма данных Keras - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь обучить модель Se gNet с данными CamVid. Я получил исходный код от https://github.com/ykamikawa/tf-keras-SegNet. Однако я получил следующую ошибку:

ValueError: Input 0 of layer conv2d_152 is incompatible with the layer: expected ndim=4, found ndim=3. Full shape received: [360, 480, 3]

Форма данных поезда (233, 360, 480, 3). Я прочитал несколько решений, и они сказали, что мне нужно заполнить модель данными формы (None, 360, 480, 3). Как я могу изменить мои данные в соответствии с этими размерами.

Я использую tenorflow2.

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Сделайте набор данных из ваших данных. Простое исправление:

x = np.zeros((233, 360, 480, 3))
dataset = tf.data.Dataset.from_tensor_slices(x).batch(1)

Предполагая, что x является вашим заданным вводом (в моем случае все нули), набор данных будет иметь форму: <BatchDataset shapes: (None, 360, 480, 3), types: tf.float64> Но я советую вам прочитать раздел набора данных в документации Tensorflow здесь .

0 голосов
/ 18 июня 2020

Вы передаете в сеть отдельные изображения без размерности пакета. (в противном случае ndim было бы 4). Вероятно, размер пакета рухнул, когда вы выбрали одно изображение с train_data[i]. Либо попробуйте выбрать изображение с помощью train_data[i:i+1], либо добавьте размер с помощью None, например:

img = train_data[i]
img = img[None, :, :, :]

И затем передайте его в nework.

Одно можно сказать наверняка, вы не передают в сеть полные данные обучения с размерами (233, 360, 480, 3).

...