【发布时间】:2019-10-30 23:31:35
【问题描述】:
实际的问题是在 Keras 中为现有(已经构建的)模型生成随机层权重。有一些使用 Numpy [2] 的解决方案,但选择这些解决方案并不好。因为,在 Keras 中,有特殊的初始化器为每种层类型使用不同的分布。当使用 Numpy 代替初始化器时,生成的权重与原始权重具有不同的分布。举个例子:
我的模型的第二层是卷积 (1D) 层,它的初始化器是 GlorotUniform [1]。如果使用 Numpy 生成随机权重,则生成的权重分布不会是 GlorotUniform。
我有这个问题的解决方案,但它有一些问题。这是我所拥有的:
def set_random_weights(self, tokenizer, config):
temp_model = build_model(tokenizer, config)
self.model.set_weights(temp_model.get_weights())
我正在构建现有模型。在构建过程之后,模型的权重被重新初始化。然后我得到重新初始化的权重并将它们设置为另一个模型。生成新权重的构建模型具有冗余过程。所以,我需要一个无需构建模型和 Numpy 的新解决方案。
【问题讨论】:
标签: tensorflow keras conv-neural-network