module 'keras.engine.topology' has no attribute 'load_weights_from_hdf5_group_by_name'

参考:

https://blog.csdn.net/heiheiya/article/details/81111932

https://blog.csdn.net/c20081052/article/details/80745969

打开 model.py,找到load_weights 函数,大概在2842行,修改位置如下:

--------------------------------------------------------------------

def load_weights(self, filepath, by_name=False, exclude=None):

    """Modified version of the correspoding Keras function with

    the addition of multi-GPU support and the ability to exclude

    some layers from loading.

    exlude: list of layer names to excluce

    """

    import h5py

    #修改第一处

    #from keras.engine import topology

    from keras.engine import saving

    if exclude:

      by_name = True

    if h5py is None:

      raise ImportError('`load_weights` requires h5py.')

    f = h5py.File(filepath, mode='r')

    if 'layer_names' not in f.attrs and 'model_weights' in f:

      f = f['model_weights']

    # In multi-GPU training, we wrap the model. Get layers

    # of the inner model because they have the weights.

    keras_model = self.keras_model

    layers = keras_model.inner_model.layers if hasattr(keras_model, "inner_model")\

      else keras_model.layers

    # Exclude some layers

    if exclude:

      layers = filter(lambda l: l.name not in exclude, layers)

    if by_name:

      #修改第二处

      #topology.load_weights_from_hdf5_group_by_name(f, layers)

      saving.load_weights_from_hdf5_group_by_name(f, layers)

    else:

      #修改第三处

      #topology.load_weights_from_hdf5_group(f, layers)

      saving.load_weights_from_hdf5_group(f, layers)

    if hasattr(f, 'close'):

      f.close()

    # Update the log directory

    self.set_log_dir(filepath)

--------------------------------------------------------------------

修改成功以后保存,并重启,然后运行代码