Я написал свой первый скрипт Keras / python, и он работает довольно хорошо, но у меня возникает странная проблема: предполагается, что мой входной слой имеет тип uint8:
X_train = np.zeros((len(file_list), IMG_HEIGHT, IMG_WIDTH, 3), dtype=np.uint8)
sys.stdout.flush()
for n, id_ in tqdm(enumerate(file_list), total=len(file_list)):
path_images = TRAIN_PATH + '/images/' + file_list[n]
img = imread(path_images)[:,:,:3]
img = exposure.rescale_intensity(img) #resize(img, (IMG_HEIGHT, IMG_WIDTH), mode='constant', preserve_range=True)
X_train[n] = img
, но когда я хочу протестируйте мою модель, она спросит меня о массиве типа float16 или float32
Таким же образом, я ожидаю, что результатом будет массив uint8, но я получу массив float32
Y_train = np.zeros((len(file_list), IMG_HEIGHT, IMG_WIDTH), dtype=np.uint8)
mask = np.zeros((IMG_HEIGHT, IMG_WIDTH, 1), dtype=np.uint8
for n, id_ in tqdm(enumerate(file_list), total=len(file_list)):
path_masks = TRAIN_PATH + '/masks/' + file_list[n]
mask3 = imread(path_masks)[:,:,:3]
mask2 = mask3[:, :, 1]
mask = exposure.rescale_intensity(mask2)
Y_train[n] = mask
последние слои моей модели:
u14 = Conv2DTranspose(32, (2, 2), strides=(2, 2), padding='same') (c13)
u14 = concatenate([u14, c1], axis=3)
c14 = Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same') (u14)
c14 = Dropout(0.1) (c14)
c14 = Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same') (c14)
c15 = Conv2D(8, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same') (c14)
outputs = Conv2D(1, (3, 3), activation='relu',kernel_initializer='he_normal', padding='same') (c15)
Это не большая проблема, но я должен изменить Тип моих массивов:
img2treat = np.expand_dims(img_extracted, axis=0).astype('float16')
pred = model.predict(img2treat)[0,:,:,:]
, и это, вероятно, может изменить / изменить некоторые результаты.
Где я go не так ???
PS: Я не ученый, а просто "компьютерный любитель патологов", так что прости меня, если мой вопрос глуп: - )