Входные данные состоят из:
- Изображения: КТ-сканы в оттенках серого с формой (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)Код:
Вот упрощенная версия моего кода:
Код: Выделить всё
# 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)
Вопрос:
Как решить проблему несоответствия форм и правильно объединить изображение, маску и данные CSV в модели? Есть какие-нибудь предложения о том, что я делаю неправильно или как это исправить?
Подробнее здесь: https://stackoverflow.com/questions/790 ... ata-in-ker