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 для разделения данных, но проблема не устранена.
Вот упрощенная версия моего кода:
< pre class="lang-py Prettyprint-override">

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

# 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 ... ta-in-kera

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