2017-04-13 55 views
0

我对keras很新颖。 我想写(使用功能API)在Keras定制层为Keras.io编写你自己的图层

class MyLayer(Layer): 
    def __init__(self, output_dim, **kwargs): 
     self.output_dim = output_dim 
     super(MyLayer, self).__init__(**kwargs) 

    def build(self, input_shape): 
     # Create a trainable weight variable for this layer. 
     self.kernel = self.add_weight(shape=(input_shape[1], self.output_dim), 
             initializer='uniform', 
             trainable=True) 
     super(MyLayer, self).build(input_shape) # Be sure to call this somewhere! 

    def call(self, x): 
     return K.dot(x, self.kernel) 

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

调用为:

sourcedistribution = Mylayer(dropout2_target) 

错误回溯如下:

File "/root/PycharmProjects/chNET/modelBuild.py", line 77, in 
model = create_network([100, 100, 3]) 
File "/root/PycharmProjects/chNET/modelBuild.py", line 53, in create_network 
sourcedistribution = Mylayer(dropout2_source) 
NameError: global name 'Mylayer' is not defined 

请帮助理解此错误。

回答

1

我认为唯一的问题是你已经定义MyLayer,但你叫它Mylayer