Я создаю модель Sequential
в Керасе, которая берет цветное изображение и свертывает его через несколько Conv2D
слоев примерно того же размера и формы, что и верхний слой (за исключением краев, вырезанных в результате свертки, в основном).
Мое понимание таково:
kernel_size
указывает размер патча для каждого входа свертки filters
указывает глубину слоя для каждого выхода свертки.
Iзатем сделайте некоторые другие вещи после сверток, которые здесь не имеют отношения.
Однако, когда я попытался скомпилировать свою модель до тестирования ее на небольших данных, я обнаружил, что Tensorflow жалуется, когда я пытаюсь сделатьkernel_size
для данного слоя больше, чем filters
для предыдущего слоя.Это на самом деле не говорит этого;вместо этого он говорит:
Размер отрицательного размера, вызванный вычитанием 3 из 1 для 'conv2d_2 / convolution' (op: 'Conv2D') с входными формами [?, 1,1022,1022], [3,3,1022,1]
, что не совсем информативно.Однако я заметил, что числа, которые он вводит, соответствуют
Отрицательный размерный размер, вызванный вычитаниемот....
и установка filters
на более высокий уровень остановила ошибку.
Мой вопрос: почему это должно быть?Я думал filters
указано глубина и kernel_size
указано ширина .Там не должно быть никакой необходимости, чтобы вставить патч свертки в толщину предыдущего слоя.Более того, эта проблема не возникает на первом слое, глубина канала (который, как я понимаю, фактически эквивалентен filters
) равна 3.
Это ошибка или нетЯ неверно истолковал значение этих параметров или что-то еще?
Фрагмент кода:
__model = Sequential()
# feature layers
__model.add(Conv2D(input_shape=(3, iX, iY), data_format="channels_first", kernel_size=kernelfilters[0][0],
filters=kernelfilters[0][1], activation=ACTIVATION))
for kernelfilter in kernelfilters:
__model.add(Conv2D(kernel_size=kernelfilter[0], filters=kernelfilter[1], activation=ACTIVATION))
Последняя строка - та, которая разрывается.
Каждая kernelfilter
вМассив kernelfilters
представляет собой пару чисел, указывающих значения kernel_size
и filters
в указанном порядке.iX
и iY
- исходные размеры изображения.ACTIVATION
- это константа, в настоящее время установленная на "relu"
, но я могу изменить ее позже!