【发布时间】:2019-04-17 03:04:55
【问题描述】:
我正在尝试将两个网络堆叠在一起。我想分别计算每个网络的损失。例如在下图中; LSTM1 的损失应该是 (Loss1 + Loss2) 并且系统的损失应该只是 (Loss2)
我用上面的想法实现了一个像下面这样的网络,但不知道如何编译和运行它。
def build_lstm1():
x = Input(shape=(self.timesteps, self.input_dim,), name = 'input')
h = LSTM(1024, return_sequences=True))(x)
scores = TimeDistributed(Dense(self.input_dim, activation='sigmoid', name='dense'))(h)
LSTM1 = Model(x, scores)
return LSTM1
def build_lstm2():
x = Input(shape=(self.timesteps, self.input_dim,), name = 'input')
h = LSTM(1024, return_sequences=True))(x)
labels = TimeDistributed(Dense(self.input_dim, activation='sigmoid', name='dense'))(h)
LSTM2 = Model(x, labels)
return LSTM2
lstm1 = build_lstm1()
lstm2 = build_lstm2()
combined = Model(inputs = lstm1.input ,
outputs = [lstm1.output,
lstm2(lstm1.output).output)])
【问题讨论】:
-
你能给出上面网络的详细结果吗?正确输入输入后,上述网络的结果是什么?
-
Feseoglu,这里有一个 keras 教程页面keras.io/getting-started/functional-api-guide/… 来解决你的问题。请告知我们它是否有效。
标签: python keras neural-network deep-learning lstm