«ValueError: неверная форма ввода при объединении изображения, маски и данных CSV в модели Keras»Python

Программы на Python
Anonymous
«ValueError: неверная форма ввода при объединении изображения, маски и данных CSV в модели Keras»

Сообщение Anonymous »

Я работаю над моделью глубокого обучения с использованием Keras, где пытаюсь объединить три входных данных: изображения, маски и данные CSV. Цель моей модели — предсказать наличие и тип кровоизлияния в мозг на основе медицинских изображений (КТ) и данных CSV. Я структурировал модель, используя Attention U-Net для сегментации изображений и плотный слой для обработки данных CSV.
Входные данные состоят из:
  • Изображения: КТ-сканы в оттенках серого с формой (256, 256, 1).
  • Маски: Бинарные маски, соответствующие сегментации по форме (256, 256, 1).
  • Данные CSV: числовые данные для различных типов кровоизлияний с формой ( 6,).
Проблема:
Я столкнулся со следующим ошибка при попытке обучить модель с помощью model.fit():

Код: Выделить всё

ValueError: Invalid input shape for input Tensor("functional_1/Cast:0", shape=(None, 6), dtype=float32). Expected shape (None, 256, 256, 1), but input has incompatible shape (None, 6)
Похоже, что данные CSV, имеющие форму (Нет, 6), подаются в модель, где данные изображения (с формой (Нет, 256) , 256, 1)) ожидается. Я дважды проверил входные фигуры и использовал train_test_split для разделения данных, но проблема не устранена.
Код:
Вот упрощенная версия моего кода:

Код: Выделить всё

# Model definition
inputs, outputs = attention_unet()  # UNet model for images

csv_input = layers.Input(shape=(6,), name='csv_input')  # CSV data input

mask_input = layers.Input(shape=(256, 256, 1), name='mask_input')  # Mask input

# CSV data processing
csv_x = layers.Dense(64, activation='relu')(csv_input)csv_x = layers.Dense(32, activation='relu')(csv_x)

# Combine CSV with U-Net output
flatten_outputs = layers.Flatten()(outputs)combined = layers.Concatenate()([flatten_outputs, csv_x])

# Final output
final_output = layers.Dense(1, activation='sigmoid', name='final_output')(combined)

# Model compilation
model = models.Model(inputs=[inputs, csv_input, mask_input], outputs=[outputs, final_output])model.compile(optimizer=Adam(), loss={'final_output': 'binary_crossentropy', 'outputs': 'categorical_crossentropy'}, metrics=['accuracy', dice_coef, jaccard_index])

# Data shapes
print(f"Shape of X_train: {X_train.shape}")  # Shape of images: (batch_size, 256, 256, 1)print(f"Shape of csv_train: {csv_train.shape}")  # Shape of CSV: (batch_size, 6)print(f"Shape of y_train: {y_train.shape}")  # Shape of masks: (batch_size, 256, 256, 1)

# Model training
model.fit({'input_layer': X_train, 'csv_input': csv_train, 'mask_input': y_train},{'final_output': csv_train, 'outputs': y_train},validation_data=({'input_layer': X_val, 'csv_input': csv_val, 'mask_input': y_val},{'final_output': csv_val, 'outputs': y_val}),epochs=50,batch_size=32,callbacks=callbacks)
Шаги, которые я попробовал:
  • Я распечатал формы обучающих данных, и все они кажутся правильно:

    Изображения: (batch_size, 256, 256, 1)
  • CSV: (batch_size, 6)
  • Маски: (batch_size, 256, 256, 1)
[*]Я проверил заказ ввода данных в model.fit(), чтобы гарантировать, что данные передаются в правильные слои.

Вопрос:
Как решить проблему несоответствия форм и правильно объединить изображение, маску и данные CSV в модели? Есть какие-нибудь предложения о том, что я делаю неправильно или как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ata-in-ker

Вернуться в «Python»