Machine learning 如何在tensorflow train API中使用我自己的激活函数?

Machine learning 如何在tensorflow train API中使用我自己的激活函数?,machine-learning,tensorflow,neural-network,deep-learning,activation-function,Machine Learning,Tensorflow,Neural Network,Deep Learning,Activation Function,我是否可以定义自己的激活函数并在TensorFlow系列API中使用它,即具有预定义估计器(如DNNClassifier)的高级API 例如,我想使用此代码,但用我自己的代码替换激活函数tf.nn.tanh: tf.estimator.DNNClassifier( 要素列=要素列, 隐藏单位=[5,10,5 n_类=3, 优化器=tf.train.ProximalAdagradOptimizer(学习率=0.01, l1_正则化_强度=0.0001), 激活(fn=tf.nn.tanh) 如果您

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

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

tf.estimator.DNNClassifier(
要素列=要素列,
隐藏单位=[5,10,5
n_类=3,
优化器=tf.train.ProximalAdagradOptimizer(学习率=0.01,
l1_正则化_强度=0.0001),
激活(fn=tf.nn.tanh)

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

DNNClassifier(要素列=要素列),
...,
激活_fn=lambda x:2*tf.nn.tanh(x)+3*tf.nn.relu(x)+1)
一般来说,
activation\u fn
可以是一个接受任意形状张量的可调用函数(因为它将应用于每个层之后)。Tensorflow将能够通过此表达式反向传播,而不会出现任何问题


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

构造函数中的
激活\u fn
参数有什么问题?你想使用什么特定的自定义函数?该参数没有问题。但是如果我想要呢要使用某些函数的缩放或修改版本,而不是通过tf.nn.list提供的函数?世界上有许多类型的有界函数:)