【问题标题】:How to use my own activation function in tensorflow train API?如何在 tensorflow train API 中使用我自己的激活函数?
【发布时间】:2017-11-09 09:14:40
【问题描述】:

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

例如,我想使用这段代码,但将激活函数 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)

【问题讨论】:

  • 构造函数中的activation_fn参数有什么问题?您想使用什么特定的自定义函数?
  • 该参数没有问题。但是,如果我想使用某些功能的缩放或修改版本,而不是通过 tf.nn. 列表提供的功能,该怎么办?这个世界上有很多类型的有界函数:)

标签: machine-learning tensorflow neural-network deep-learning activation-function


【解决方案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 将能够毫无问题地通过这个表达式进行反向传播。

但是,如果您想要一个全新的自定义操作,而不是通过现有操作来表达,您必须注册它并手动计算它的梯度。详情请见this question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 2018-01-27
    • 2020-12-07
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多