В следующем коде у меня есть XE
, XW
, YE
и YW
фигур (474077, 32)
, (474077, 32)
, (474077, 1)
и (474077, 1)
соответственно.
После отдельного обучения modelE
и modelW
на 32 входах и 1 выходе каждый, я добавляю слой Lambda
, который минимизирует разницу между выходами обеих моделей.Этот код выполняется без ошибок.
Я предполагаю, что этот слой Lambda
обновляет весовые коэффициенты и смещения modelE
и modelW
, чтобы минимизировать разницу между их выходными данными.Как я могу использовать новые обновленные веса и смещения modelE
и modelW
, чтобы предсказать их новые результаты?Я хочу сравнить исходные результаты моделей и их выходы после того, как слой Lambda
минимизировал разницу между ними.
XtrainE, XtestE, YtrainE, YtestE = train_test_split(XE, YE, test_size=.5)
XtrainW, XtestW, YtrainW, YtestW = train_test_split(XW, YW, test_size=.5)
modelE = Sequential()
modelE.add(Dense(50, activation='relu', input_dim=32))
modelE.add(Dense(20, activation='relu'))
modelE.add(Dense(1, activation='relu'))
modelW = Sequential()
modelW.add(Dense(50, activation='relu', input_dim=32))
modelW.add(Dense(20, activation='relu'))
modelW.add(Dense(1, activation='relu'))
modelE.compile(loss='mse', optimizer='rmsprop')
modelW.compile(loss='mse', optimizer='rmsprop')
historyE= modelE.fit(XtrainE, YtrainE, validation_data=(XtestE,YtestE), epochs=200, batch_size=100, verbose=1)
historyW= modelW.fit(XtrainW, YtrainW, validation_data=(XtestW,YtestW), epochs=200, batch_size=100, verbose=1)
YpredE = modelE.predict(XtestE)
YpredW = modelW.predict(XtestW)
difference = Lambda(lambda x: x[0] - x[1])([modelE.output, modelW.output])
diffModel = Model(modelE.inputs + modelW.inputs, difference)
diffModel.compile(optimizer = 'adam', loss='mse')
diffModel.fit([XE,XW], np.zeros(YE.shape), epochs=200, batch_size=100, verbose=1)
Я пытался:
YpredWnew = modelW.predict(XtestW)
YpredEnew = modelE.predict(XtestE)
for i in range (len(YpredWnew)):
print("oldE= %.2f, newE= %.2f, oldW= %.2f, newW= %.2f," % (YpredE[i], YpredWnew[i], YpredW[i], YpredWnew[i]))
, но это возвращаетодинаковое значение для всех i
в YpredEnew[i]
Спасибо