Невозможно предоставить информацию для CNN, разработанного в Керасе. - PullRequest
0 голосов
/ 30 марта 2019

Я пытаюсь построить сеть с входным массивом размером 5x1. Тем не менее, симулятор, откуда я беру данные, имеет размер 1x5.

(Этот вход должен быть разделен на две части: 1x1 и 4x1. Затем вход 4x1 должен перейти на 2 сверточных слоя и в конечном итоге объединиться с входом 1x1, чтобы сформировать сплющенный слой.)

Я пытался использовать numpy для передачи данных в 5x1 (на стороне симулятора), но затем я получаю сообщение об ошибке на стороне сети:

"ValueError: Ошибка при проверке ввода: ожидалось, что input_1 будет иметь 3 измерения, но получил массив с формой (1, 1, 5, 1)".

Я перепробовал много возможностей, но, похоже, ни одна из них не сработала.

def slice1(x):
    return x[:, 0:1]

def slice2(x):
    return x[:, 0:4]

a = Input(batch_shape=(None, 5, 1))

x1 = Lambda(slice1)(a)
x2 = Lambda(slice2)(a)

x = Conv1D(32, 4, strides=4, activation = 'relu')(x2)
x = Conv1D(32, 1, strides=1, activation = 'relu')(x)
x = MaxPooling1D(pool_length=1)(x)

x = Flatten()(Concatenate(axis=-1)([x1, x]))
x = Dense(64, activation='relu')(x)
x = Dense(5, activation='relu')(x)

model = Model(a, x)
model.summary()
...