python - 从 kwargs 中消除一个论点。那可能吗?
问题描述
我正在使用 Keras 中的内置函数来创建 XCeption 合奏。在我的集成中,每个 Xception 网络都会考虑不同的权重初始化方法。初始化技术如下:
switcher = {
0: Orthogonal(gain=1.0, seed=None),
1: lecun_uniform(seed=None),
2: VarianceScaling(scale=1.0, mode='fan_in', distribution='normal', seed=None),
3: RandomNormal(mean=0.0, stddev=0.05, seed=None),
4: RandomUniform(minval=-0.05, maxval=0.05, seed=None),
5: TruncatedNormal(mean=0.0, stddev=0.05, seed=None),
6: glorot_normal(seed=None),
7: glorot_uniform(seed=None),
8: he_normal(seed=None),
9: he_uniform(seed=None)
}
好的,所以,对于我的集合中的几个 CNN,我实例化 Xception 网络,如下所示。
base_model=xception.Xception(include_top=False, weights=None, kernelinitializer=xception_ensemble.switcher.get(init_var))
要包含 kernelinitializer 参数以初始化 Xception 权重,我必须在我的 python3.6/site-packages/keras_applications/xception.py 文件中进行一些修改。
第一个修改是在 CNN 的构造函数中包含变量 kernelinitializer,如下所示:
def Xception(include_top=True,
weights='imagenet',
input_tensor=None,
input_shape=None,
pooling=None,
classes=1000, kernel_initializer="he_normal", **kwargs):
我放“he_normal”只是因为如果没有通知它必须有一个默认值。
然后,下一步是添加 kernel_initializer 值来初始化 Xception CNN 的任何卷积层。例如:
residual = layers.Conv2D(256, (1, 1), strides=(2, 2),
padding='same', use_bias=False, kernel_initializer=kernel_initializer)(x)
然而这里有一个问题。代码做了以下事情
backend, layers, models, keras_utils = get_submodules_from_kwargs(kwargs)
因此,该函数将所有参数(包括我的外星人参数)作为输入来构建 CNN 的子模块。但是,我的论点(显然)不被函数识别。因此,会发生以下错误:
文件“venv/lib/python3.6/site-packages/keras_applications/ init .py”,第 20 行,在 get_submodules_from_kwargs 中引发 TypeError('Invalid keyword argument: %s', key) TypeError: ('Invalid keyword argument: %s ', '内核初始化器')
有没有办法从这些 kwards 中消除我的 kernelinitializer 变量?有没有办法解决这个问题?
解决方案
您可以使用 dict comprehension 来获取没有特定项目的 kwargs 副本:
{key: value for key, value in kwargs.items() if key != 'kernelinitializer'}
推荐阅读
- r - DataTable 中的多个按钮调用相同的 modalDialog - Shiny
- android - 将 Android 应用排除在备用存储桶中
- c++ - 具有可变参数类型的模板多可变继承
- functional-programming - 是否可以在 Dart 中使用部分应用程序(部分/应用/修复参数)
- html - 移除 html 输入框的边框
- jenkins - 无法在 Jenkins 中使用“部署到容器插件”
- r - 如何在 R 中自动创建直方图,将结果保存在 hist() 对象列表中?
- http - 带有空数据的 HTTP PUT 的响应代码
- javascript - functions that return promises must be async
- r - 尝试使用 sapply 进行子集化时,未定义的列在 R 中选择错误