我正在探索keras中的卷积层:
https://github.com/fchollet/keras/blob/master/keras/layers/convolutional.py#L233
我到处找到以下类型的代码行:
@interfaces.legacy_conv1d_support
@interfaces.legacy_conv2d_support
这些线的工作和作用是什么。我在谷歌搜索但没有在任何地方找到答案。请解释。
答案 0 :(得分:2)
这些以@
开头的行在decorators
中称为python
。查看this页面以阅读有关它们的简短摘要。这个装饰器的基本功能是,它将以下函数包装到另一个具有某种“包装”函数的函数中,比如预处理参数,改变函数的可访问性等。
查看interfaces.py
文件,您会看到:
legacy_conv1d_support = generate_legacy_interface(
allowed_positional_args=['filters', 'kernel_size'],
conversions=[('nb_filter', 'filters'),
('filter_length', 'kernel_size'),
('subsample_length', 'strides'),
('border_mode', 'padding'),
('init', 'kernel_initializer'),
('W_regularizer', 'kernel_regularizer'),
('b_regularizer', 'bias_regularizer'),
('W_constraint', 'kernel_constraint'),
('b_constraint', 'bias_constraint'),
('bias', 'use_bias')],
preprocessor=conv1d_args_preprocessor)
因此,使用此函数基本上是重命名参数。为什么是这样? keras
API更改了某些函数的某些参数的名称(例如W_regularizer
- > kernel_regularizer
)。为了允许用户能够运行旧代码,他们添加了这个装饰器,它将在调用实际函数之前用相应的新参数名替换旧参数的名称。这使您可以运行“旧”keras 1
代码,即使您已安装keras 2
。
Tl; dr :这些行仅用于兼容性原因。由于这只是keras
的内部方面,因此您无需担心或照顾。