TensorFlow を使用してネットワークを実装し、コードで次のことを行うモデルを作成しました。
def multilayer_perceptron(x, weights, biases):
layer_1 = tf.add(tf.matmul(x, weights["h1"]), biases["b1"])
layer_1 = tf.nn.relu(layer_1)
out_layer = tf.add(tf.matmul(layer_1, weights["out"]), biases["out"])
return out_layer
重みとバイアスを次のように初期化します。
weights = {
"h": tf.Variable(tf.random_normal([n_input, n_hidden_1])),
"out": tf.Variable(tf.random_normal([n_hidden_1, n_classes]))
}
biases = {
"b": tf.Variable(tf.random_normal([n_hidden_1])),
"out": tf.Variable(tf.random_normal([n_classes]))
}
ここで、カスタム アクティベーション関数を使用したいと考えています。したがって、次のように定義されtf.nn.relu(layer_1)
たカスタム アクティベーション関数に置き換えました。custom_sigmoid(layer_1)
def custom_sigmoid(x):
beta = tf.Variable(tf.random.normal(x.get_shape[1]))
return tf.sigmoid(beta*x)
beta
トレーニング可能なパラメーターはどこにありますか。TensorFlow が使用できるように派生物を実装する方法がわからないため、これは機能しないことに気付きました。
質問: TensorFlow でカスタム アクティベーション関数を使用するにはどうすればよいですか? 助けていただければ幸いです。