У меня есть керас 3D / 2D модель.В этой модели трехмерный слой имеет форму [Нет, Нет, 4, 32].Я хочу изменить это в [None, None, 128].Однако, если я просто сделаю следующее:
reshaped_layer = Reshape ((- 1, 128)) (my_layer)
my_layer имеет форму [Нет, 128] и поэтому я не могу применить впоследствии любую 2D-свертку, как:
conv_x = Conv2D (16, (1,1)) (reshaped_layer)
Я пробовалиспользовать tf.shape (my_layer) и tf.reshape, но я не смог скомпилировать модель, поскольку tf.reshape не является слоем Keras.
Просто чтобы уточнить, я использую каналы в последнюю очередь;это не тф.керас, это просто керас.Здесь я отправляю отладку функции изменения формы: Reshape in keras
Это то, что я делаю сейчас, следуя совету anna-krogager:
def reshape(x):
x_shape = K.shape(x)
new_x_shape = K.concatenate([x_shape[:-2], [x_shape[-2] * x_shape[-1]]])
return K.reshape(x, new_x_shape)
reshaped = Lambda(lambda x: reshape(x))(x)
reshaped.set_shape([None,None, None, 128])
conv_x = Conv2D(16, (1,1))(reshaped)
Я получаю следующееerror: ValueError: Размер канала должен быть определен.Не найдено
