Могу ли я добавить функцию tf.keras.backend в «пользовательский» слой TensorFlow? - PullRequest
0 голосов
/ 10 апреля 2019

TensorFlow может реализовать Keras с tf.keras.

Keras предлагает три реализации бэкэнда: бэкэнд TensorFlow, бэкэнд Theano и бэкэнд CNTK.

Если я хочу создать собственный слой, могу ли я добавить tf.keras.backend.theano.tensor.dot и tf.keras.backend.theano.gradient.disconnected_grad в функцию вызова?

Например, в TensorFlow есть одна программа (https://www.tensorflow.org/tutorials/eager/custom_layers):

class MyDenseLayer(tf.keras.layers.Layer):
    def __init__(self, num_outputs):
        super(MyDenseLayer, self).__init__()
        self.num_outputs = num_outputs

    def build(self, input_shape):
        self.kernel = self.add_variable("kernel", 
                                    shape=[int(input_shape[-1]), 
                                           self.num_outputs])

    def call(self, input):
        return tf.matmul(input, self.kernel)

Могу ли я изменить функцию вызова на:

def call(self, input):
    return tf.keras.backend.theano.tensor.dot(self.kernel,tf.keras.backend.theano.gradient.disconnected_grad(input))
...