【发布时间】:2019-09-05 20:22:30
【问题描述】:
如果您使用 keras 子类 api,并且想要根据输入维度 x = (batch_dim, n) 生成一堆层 (n),有没有办法在构建方法中执行此操作?
或者是在 init 时间将输入 dim 传递到模型中以便可以在 init 范围内创建层的唯一方法?
更新:伪代码(未经测试)示例
class BigModel(tf.keras.models.Model):
def __init__(self):
super.__init__()
self._my_submodels = list()
def build(self, input_shape):
for i in range(input_shape[1]):
self.my_submodels.append(MyModel(param=i))
def call(self, *inputs):
stuff = list()
for submodel in self.my_submodels:
stuff.append(submodel(*inputs))
# do something amazing with all the models
fan_in = ... # combine
return fan_in
您可以可能使用具有大量拆分的模型以更矢量化的方式重写整个结构,但它会更难阅读和处理,我认为新的 tf 2.0 允许这种没有任何成本损失的活力。
【问题讨论】:
标签: keras tensorflow2.0