看到有一句代码如下:
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提供了几个参数,然后剩下的参数需要等到调用的时候在传入,顺序是从左到右,赋过初值的不会重复赋值