Memory problem
I've been modifying the following part of a larger program:
def init_model(D=8, W=128): inputs = tf.keras.Input(shape=(3 + 3*2*L_embed)) outputs = inputs for i in range(D): outputs = tf.keras.layers.Dense(128, kernel_initializer=tf.keras.initializers.Orthogonal(gain=1.0), activation=tf.keras.layers.ReLU() , use_bias=False)(outputs) #if i%4==0 and i>0: # outputs = tf.concat([outputs, inputs], -1) outputs = tf.keras.layers.Dense(4, activation=None)(outputs)
model = tf.keras.Model(inputs=inputs, outputs=outputs) return model
However, I want to use the activation function assigning to an input x the number sqrt(2)*sin(x+pi/4), but when I write as follows:
def specialactiation(x): return np.sqrt(2.0)*tf.keras.backend.sin(x + math.pi/4)
def init_model(D=8, W=128): inputs = tf.keras.Input(shape=(3 + 3*2*L_embed)) outputs = inputs for i in range(4): outputs = tf.keras.layers.Dense(128, kernel_initializer=tf.keras.initializers.Orthogonal(gain=1.0), activation=tf.keras.layers.Activation(specialactiation) , use_bias=False)(outputs) #if i%4==0 and i>0: # outputs = tf.concat([outputs, inputs], -1) outputs = tf.keras.layers.Dense(4, activation=None)(outputs)
model = tf.keras.Model(inputs=inputs, outputs=outputs) return model
I find that memory use balloons. Can anyone explain why, and what I'm supposed to do to make a custom activation function work as well as tf.keras.layers.ReLU()?