我想用以下语义实现一个层:
x = inputs
l = MyLayer(output_size)
outputs = l(x)
当前,我需要将input_size传递到MyLayer的构造函数中,以初始化其权重:
self.w = tf.get_variable(
name='w',
shape=(self.input_dim, self.output_dim),
initializer=tf.contrib.layers.xavier_initializer())
但是,当我将初始化推迟到__call__
方法并使用x.shape[-1]
代替self.input_dim
时,TensorFlow将不允许它。
如何实现这种行为,类似于tf.layers.Dense
和其他各层的工作原理?