编写我自己的keras图层

编写我自己的keras图层

问题描述:

我想用自己的keras图层作为输入,形成具有形状的张量(nb_batch,input_dim)并生成带形状的张量(nb_batch,context_size,output_dim)。我下面写一个演示:编写我自己的keras图层

class MyLayer(Layer): 
def __init__(self, output_dim, context_size, init="uniform", **kwargs): 
    self.output_dim = output_dim 
    self.context_size = context_size 
    self.init = initializations.get(init) 
    super(MyLayer, self).__init__(**kwargs) 

def build(self, input_shape): 
    input_dim = input_shape[1] 
    self.W_vec = self.init(
     (self.context_size, input_dim, self.output_dim), 
     name="W_vec") 

    self.trainable_weights = [self.W_vec] 
    super(MyLayer, self).build() # be sure you call this somewhere! 

def call(self, x, mask=None): 
    return K.dot(x, self.W_vec) 
    # return K.dot(x, self.W) 

def get_output_shape_for(self, input_shape): 
    return (input_shape[0], self.context_size, self.output_dim) 

,当我跑了,得到了一个错误“类型错误:建立()究竟需要两个参数(1给出)” enter code here

貌似构建需要输入形状参数

super(MyLayer, self).build(input_shape) # be sure you call this somewhere!