eReS
eReS

Reputation: 186

Using custom tensorflow ops in keras

I am having a script in tensorflow which contains the custom tensorflow ops. I want to port the code to keras and I am not sure how to call the custom ops within keras code.

I want to use tensorflow within keras, so the tutorial I found so far is describing the opposite to what I want: https://blog.keras.io/keras-as-a-simplified-interface-to-tensorflow-tutorial.html.

I also read about Lambda layers that can wrap arbitrary custom function, yet I did not see an example for tf.ops.

If you could provide code snippet with a simplest example how to do that I would be very grateful. For example assuming the tf.ops as:

outC = my_custom_op(inA, inB)

---EDIT: Similar problem has been described in here - essentially calling this custom op in keras, however I cannot grasp the solution how to apply it on another example that I want, for instance this one. This custom tf op is first compiled (for gpu) and then so far used within tensorflow as here, see @ line 40. It is clear for me how to use a custom (lambda) function wrapped in Lambda layer, what I would like to understand is how to use the compiled custom ops, if I use keras.

Upvotes: 3

Views: 1828

Answers (1)

sdcbr
sdcbr

Reputation: 7129

You can wrap arbitrary tensorflow functions in a keras Lambda layer and add them to your model. Minimal working example from this answer:

import tensorflow as tf
from keras.layers import Dense, Lambda, Input
from keras.models import Model

W = tf.random_normal(shape=(128,20))
b = tf.random_normal(shape=(20,))

inp = Input(shape=(10,))
x = Dense(128)(inp)
# Custom linear transformation
y = Lambda(lambda x: tf.matmul(x, W) + b, name='custom_layer')(x) 
model = Model(inp, y)

Upvotes: 5

Related Questions