参考:
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)
--------------------------------------------------------------------
修改成功以后保存,并重启,然后运行代码
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:module ‘keras.engine.topology’ has no attribute ‘load_weights_from_hdf5_group_by_name’ - Python技术站