【发布时间】:2019-03-19 12:36:28
【问题描述】:
我对更新 Keras 中现有的图层参数感兴趣(不是删除图层并插入新图层,而只是修改现有参数)。
我将举一个我正在编写的函数的示例:
def add_filters(self, model):
conv_indices = [i for i, layer in enumerate(model.layers) if 'convolution' in layer.get_config()['name']]
random_conv_index = random.randint(0, len(conv_indices)-1)
factor = 2
conv_layer = model.layers[random_conv_index]
conv_layer.filters = conv_layer.filters * factor
print('new conv layer filters after transform is:', conv_layer.filters)
print('just to make sure, its:', model.layers[random_conv_index].filters)
return model
所以这里基本上发生的事情是我从我的网络中获取一个随机卷积层(我所有的卷积层的名称中都有“卷积”)并尝试将过滤器加倍。据我所知,在任何情况下,这都不应该导致输入/输出大小兼容性的任何“编译问题”。
问题是,我的模型根本没有改变。我最后添加的 2 个打印输出打印了正确的数字(是之前过滤器数量的两倍)。但是当我编译模型并打印model.summary()时,还是看到了之前的过滤量。
顺便说一句,我并不局限于 Keras。例如,如果有人知道如何使用 PyTorch 实现这一目标,我也会购买它:D
【问题讨论】:
标签: python neural-network keras deep-learning conv-neural-network