keras中的卷积层

时间:2017-09-13 10:04:25

标签: keras

我正在探索keras中的卷积层:

https://github.com/fchollet/keras/blob/master/keras/layers/convolutional.py#L233

我到处找到以下类型的代码行:

 @interfaces.legacy_conv1d_support
@interfaces.legacy_conv2d_support

这些线的工作和作用是什么。我在谷歌搜索但没有在任何地方找到答案。请解释。

1 个答案:

答案 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的内部方面,因此您无需担心或照顾。