Мне нужно обучить 3D_ Unet модель с (128x128x128) патчами 42 сканирования CT.
Мои входные данные 128x128x128 для сканирования CT, а также для масок. Я расширил форму массивов до (128, 128, 128, 1). Где 1 - это канал.
Проблема в том, как заполнить модель моим списком из 40 4D-массивов?
Как я могу использовать model.fit () или model.train_on_batch с правильная форма ввода, указанная в моей модели?
project_name = '3D-Unet Segmentation of Lungs'
img_rows = 128
img_cols = 128
img_depth = 128
# smooth = 1
K.set_image_data_format('channels_last')
#corresponds to inputs with shape:
#(batch, spatial_dim1, spatial_dim2, spatial_dim3, channels)
def get_unet():
inputs = Input(shape=(img_depth, img_rows, img_cols, 1))
conv1 = Conv3D(32, (3, 3, 3), activation='relu', padding='same')(inputs)
conv1 = Conv3D(32, (3, 3, 3), activation='relu', padding='same')(conv1)
pool1 = MaxPooling3D(pool_size=(2, 2, 2))(conv1)
conv2 = Conv3D(64, (3, 3, 3), activation='relu', padding='same')(pool1)
conv2 = Conv3D(64, (3, 3, 3), activation='relu', padding='same')(conv2)
pool2 = MaxPooling3D(pool_size=(2, 2, 2))(conv2)
....
model = Model(inputs=[inputs], outputs=[conv10])
model.summary()
#plot_model(model, to_file='model.png')
model.compile(optimizer=Adam(lr=1e-5, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.000000199),
loss='binary_crossentropy', metrics=['accuracy'])
return model
для списка массивов в качестве входных данных
Что я должен указать в .train_on_batch () или .fit ()?
Это ошибка, которую я получаю при использовании опции .train_on_batch:
ValueError: Ошибка при проверке ввода модели: список Numpy массивов, передаваемых вашей модели, не соответствует размеру, ожидаемому моделью , Ожидается увидеть 1 массив (ов), но вместо этого получен следующий список из 42 массивов
model.train_on_batch(train_arrays_list, mask_arrays_list)
Это ошибка, которую я получаю при использовании опции .model.fit после увеличения формы массивов с осью = 0.
UnboundLocalError: локальная переменная 'batch_index', на которую ссылается перед присваиванием
model.fit(train_arrays_list[0], mask_arrays_list[0],
batch_size=1,
epochs=50,
verbose=1,
shuffle=True,
validation_split=0.10,
callbacks=[model_checkpoint, csv_logger])