Я хочу сделать обучение с помощью простых моделей MLP. Сначала я обучаю сеть с 1 прямой связью на больших данных:
net = Sequential()
net.add(Dense(500, input_dim=2048, kernel_initializer='normal', activation='relu'))
net.add(Dense(1, kernel_initializer='normal'))
net.compile(loss='mean_absolute_error', optimizer='adam')
net.fit(x_transf,
y_transf,
epochs=1000,
batch_size=8,
verbose=0)
Затем я хочу передать уникальный скрытый слой в качестве входных данных для новой сети, в которую я хочу добавить второй слой. Повторно используемый слой не должен быть обучаемым.
idx = 1 # index of desired layer
input_shape = net.layers[idx].get_input_shape_at(0) # get the input shape of desired layer
input_layer = net.layers[idx]
input_layer.trainable = False
transf_model = Sequential()
transf_model.add(input_layer)
transf_model.add(Dense(input_shape[1], activation='relu'))
transf_model.compile(loss='mean_absolute_error', optimizer='adam')
transf_model.fit(x,
y,
epochs=10,
batch_size=8,
verbose=0)
EDIT:
Код выше возвращает:
ValueError: Error when checking target: expected dense_9 to have shape (None, 500) but got array with shape (436, 1)
Какой трюк, чтобы заставить эту работу?