Предварительная обработка Keras для задачи трехмерной семантической сегментации

Я понимаю, что для сегментации семантических изображений у вас часто есть папка с изображениями и папка с соответствующими масками. В моем случае у меня есть полутоновые изображения с размерами (32, 32, 32). Маски естественно имеют одинаковые размеры. Метки сохраняются как значения интенсивности (значение 1 = метка 1, значение 2 = метка 2 и т. Д.). Всего 4 класса. Представьте, что я нашел модель, созданную с помощью API-интерфейса модели keras. Как мне узнать, как подготовить данные на этикетке, чтобы они были приняты моделью? Зависит ли это от функции потерь? Это определено в модели (входной параметр). Должен ли я просто добавить другое измерение (4, 32, 32, 32), в котором 4 представляет 4 различных класса и один горячий код это? Я хочу построить трехмерную сверточную нейронную сеть для семантической сегментации, но я не понимаю, как правильно вводить данные в кератах. Предполагается, что прогнозируемый выходной сигнал представляет собой 4-канальное трехмерное изображение, каждый канал которого показывает значения вероятности каждого пикселя, принадлежащие определенному классу.              

Функция 
```
Input()
```
 определяет форму входного тензора данной модели. Для трехмерных изображений часто ожидается 5D Tensor, например 
```
(None, 32, 32, 32, 1)
```
, где None относится к размеру партии. Поэтому тренировочные образы и ярлыки должны быть изменены. Keras предлагает функцию 
```
to_categorical
```
 для быстрого кодирования данных метки (что необходимо). Использование генераторов помогает вводить данные. В этом случае я не могу использовать ImageDataGenerator от keras, так как он может работать только с изображениями RGB и в градациях серого и поэтому должен написать собственный скрипт.