2 回答

TA貢獻1846條經驗 獲得超7個贊
您的代碼方式是您有兩個單獨的模型。雖然您可以簡單地將共享表示層的輸出用于以下兩個子網,但您必須合并這兩個子網作為輸入:
Xinput = Input(shape=(100,))
Yinput = Input(shape=(300,))
Xencoded = Dense(50, activation='relu')(Xinput)
Xencoded = Dense(20, activation='relu')(Xencoded)
Yencoded = Dense(120, activation='relu')(Yinput)
Yencoded = Dense(50, activation='relu')(Yencoded)
shared_input = Concatenate()([Xencoded, Yencoded])
shared_output = Dense(15, activation='relu')(shared_input)
Xdecoded = Dense(20, activation='relu')(shared_output)
Xdecoded = Dense(50, activation='relu')(Xdecoded)
Xdecoded = Dense(100, activation='relu')(Xdecoded)
Ydecoded = Dense(50, activation='relu')(shared_output)
Ydecoded = Dense(120, activation='relu')(Ydecoded)
Ydecoded = Dense(300, activation='relu')(Ydecoded)
現在你有兩個獨立的輸出。所以你需要兩個單獨的損失函數,無論如何都會添加它們來編譯模型:
model = Model([Xinput, Yinput], [Xdecoded, Ydecoded])
model.compile(optimizer='adam', loss=['mse', 'mse'], loss_weights=[1., 1.])
然后,您可以通過以下方式簡單地訓練模型:
model.fit([X_input, Y_input], [X_label, Y_label])
添加回答
舉報