compute_output_shape中的Keras API模型引发NotImplementedError NotImplementedError

时间:2019-08-10 21:03:53

标签: keras model

我想实现一个具有多输入和多输出的复杂模型。所以我只能使用Keras.models.Model来实现它。

keras == 2.2.4 张量流== 1.13.1

但是我得到这个错误:

  

使用TensorFlow后端。

     

警告:tensorflow:来自   G:\ Anaconda3 \ lib \ site-packages \ tensorflow \ python \ framework \ op_def_library.py:263:   colocate_with(来自tensorflow.python.framework.ops)已弃用,   将在以后的版本中删除。

     

更新说明:

     

托管服务器自动处理的托管。

     

回溯(最近通话最近一次):

     

文件   “ G:\ Anaconda3 \ lib \ site-packages \ IPython \ core \ interactiveshell.py”,   第3326行,在run_code中       exec(code_obj,self.user_global_ns,self.user_ns)

     

文件“”,第1行,在       runfile('G:/JupyterWorkSpace/InfosExtractor/code/BERT/ModelTest.py',   wdir ='G:/ JupyterWorkSpace / InfosExtractor / code / BERT')

     

文件“ G:\ PyCharm \ PyCharm   2018.3.4 \ helpers \ pydev_pydev_bundle \ pydev_umd.py“,行197,在运行文件中       pydev_imports.execfile(filename,global_vars,local_vars)#执行脚本

     

文件“ G:\ PyCharm \ PyCharm   2018.3.4 \ helpers \ pydev_pydev_imps_pydev_execfile.py“,第18行,在execfile中       exec(compile(contents +“ \ n”,file,'exec'),glob,loc)

     

文件“ G:/JupyterWorkSpace/InfosExtractor/code/BERT/ModelTest.py”,   第19行,在       out = myModel(输入)

     

文件“ G:\ Anaconda3 \ lib \ site-packages \ keras \ engine \ base_layer.py”,   第474行,在致电中       output_shape = self.compute_output_shape(input_shape)

     

文件“ G:\ Anaconda3 \ lib \ site-packages \ keras \ engine \ network.py”,行   587,以compute_output_shape

raise NotImplementedError
     

NotImplementedError

我发现这些子类的_is_graph_network是False。我在keras.network中找到了代码:

def compute_output_shape(self, input_shape):
     if not self._is_graph_network:
         # Must be implemented by subclasses.
         raise NotImplementedError

我也找不到一些有关“#必须由子类实现”的示例。

一个简单的示例,例如:

from keras import Model, Input, losses
from keras.layers import Dense
from keras.optimizers import SGD


class MyModel(Model):
    def __init__(self, **kwargs):
        super(MyModel, self).__init__(**kwargs)
        self.dense1 = Dense(256)

    def call(self, inputs, mask=None):
        out = self.dense1(inputs)
        return out


if __name__ == "__main__":
    input = Input(shape=(256,))
    myModel = MyModel()
    out = myModel(input)
    model = Model(inputs=input, outputs=out)
    model.compile(optimizer=SGD, loss=losses.sparse_categorical_crossentropy)

0 个答案:

没有答案