1

我可以定义自己的激活函数并在 TensorFlow Train API 中使用它,即具有预定义估计器(如DNNClassifier )的高级 API吗?

例如,我想使用此代码,但将激活函数tf.nn.tanh替换为我自己的:

tf.estimator.DNNClassifier(
  feature_columns=feature_columns,
  hidden_units=[5,10,5
  n_classes=3, 
  optimizer=tf.train.ProximalAdagradOptimizer(learning_rate=0.01,
                                              l1_regularization_strength=0.0001),
  activation_fn=tf.nn.tanh)
4

1 回答 1

1

如果您的自定义函数可以用内置的 tensorflow 操作表示,那么它相当简单。例如:

DNNClassifier(feature_columns=feature_columns,
              ...,
              activation_fn=lambda x: 2*tf.nn.tanh(x)+3*tf.nn.relu(x)+1)

一般来说,activation_fn可以是一个接受任意形状张量的可调用对象(因为它将在每一层之后应用)。Tensorflow 将能够毫无问题地通过这个表达式进行反向传播。

但是,如果您想要一个全新的自定义操作,不能通过现有操作来表达,您必须注册它并手动计算它的梯度。有关详细信息,请参阅此问题

于 2017-11-10T19:10:23.030 回答