functools 中的 partial的作用

看到有一句代码如下:

from functools import partial
my_dense_layer = partial(tf.layers.dense,
                         activation=tf.nn.elu,
                         kernel_initializer=he_init,
                         kernel_regularizer=l2_regularizer)

hidden1 = my_dense_layer(X, n_hidden1)
hidden2 = my_dense_layer(hidden1, n_hidden2)
hidden3 = my_dense_layer(hidden2, n_hidden3)
outputs = my_dense_layer(hidden3, n_outputs, activation=None)

partial的作用可以理解为预先给函数提供参数并且返回一个对象,给哪个函数呢?就是partial的第一个参数

来看看

tf.layers.dense:
def dense(
    inputs, units,
    activation=None,
    use_bias=True,
    kernel_initializer=None,
    bias_initializer=init_ops.zeros_initializer(),
    kernel_regularizer=None,
    bias_regularizer=None,
    activity_regularizer=None,
    kernel_constraint=None,
    bias_constraint=None,
    trainable=True,
    name=None,
    reuse=None):

可以看到partial是选择性的给dense提供了几个参数,然后剩下的参数需要等到调用的时候在传入,顺序是从左到右,赋过初值的不会重复赋值

发布了1033 篇原创文章 · 获赞 41 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_41791402/article/details/103500221