【问题标题】:Repeat keras (tensorflow) model over additional dimension在附加维度上重复 keras (tensorflow) 模型
【发布时间】:2019-03-14 21:23:09
【问题描述】:

假设我有一个模型,它将形状为 [n, 10] 的张量映射到形状为 [n, 2] 的张量,其中 n 是批量大小。如何重复模型,以便生成的模型接受形状为 [n, k, 10] 的输入张量并输出形状为 [n, k, 2] 的张量?模型的 k 个版本应该共享所有权重。

【问题讨论】:

  • 嘿,您需要在问题中添加更多细节,可能是代码示例等。请查看如何编写好问题的指南以获取更多详细信息stackoverflow.com/help/how-to-ask
  • 感谢您的评论。我考虑了一下并决定反对它,因为任何基于 keras.Model 对象的可能性对我来说都很好。

标签: python tensorflow keras


【解决方案1】:

你可以这样做:

input_ = Input((k, model.input.shape[1]))
input_as_list = Lambda(lambda x: tf.unstack(x, axis=1))(input_)
model_outputs = [model(x) for x in input_as_list] 
model_outputs = [Lambda(lambda x: K.expand_dims(x, axis=1))(y) for y in model_outputs]
concat_output = Concatenate(axis=1)(model_outputs)
new_model = Model(input_, concat_output)

【讨论】:

  • 正是我所要求的 :) 谢谢!
  • 此解决方案的缺点是您不会从模型并行化中受益,不是吗?假设模型非常简单(就像一个密集层),但输入列表很大:由于相同元素的多次重复,图形会变得过于复杂,并且您将一个接一个地计算......不是吗有没有更好的解决方案?就像更改子模型的批量大小(乘以 N)以使其接受更多向量?
猜你喜欢
  • 2019-11-11
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
  • 1970-01-01
  • 2018-03-29
相关资源
最近更新 更多