【发布时间】:2018-10-08 09:48:34
【问题描述】:
我有一个预训练模型,其中包含多个形状不同的输入。所以我可以在具有匹配形状的新输入上调用模型,如下所示:
new_output = model([input_1, input2])
与
input_1.shape = (400, 200)
input_2.shape = (400, 200, 10)
我想重用模型在数据系列上对其进行训练,因此我的新输入将具有以下形状:
input_1.shape = (100, 400, 200)
input_2.shape = (100, 400, 200, 10)
要重用模型,我想使用 Keras 的 TimeDistributed 层,如下所示:
output = TimeDistributed(model)([input_1, input_2])
这不起作用,因为TimeDistributed 不接受列表作为输入。到目前为止,我发现的所有解决方法都是使用合并输入来解决这个问题,但是这个解决方案在我的情况下不起作用,因为输入形状不同。
我也尝试过像这样使用一些Lambda 层:
lambda_0 = Lambda(lambda x: x)
lambda_1 = Lambda(lambda x: [TimeDistributed(lambda_0)(x[0]), TimeDistributed(lambda_0)(x[1])])([input_1, input_2])
output = model(lambda_1)
但这不起作用,因为它只在lambda_0 上使用TimeDistributed,而不是在模型上。也许有Lambda wrappers 的解决方案可以解决这个问题,或者我必须定义一个自定义的 Keras 层,但目前我遇到了这个问题,所以我将不胜感激。
【问题讨论】:
-
你的初始模型有一个输出层吗?
-
是的,输入在模型内部连接并产生一个输出。
标签: python tensorflow machine-learning keras time-series