无法从保存的模型加载自定义初始值设定项,传递custom_objects无法正常工作

时间:2016-11-21 10:14:23

标签: python-2.7 keras

我在Keras中保存了模型和权重,然后尝试加载它们,但它显示无效的初始化:my_init.How我可以解决这个问题吗?

model = Sequential()
def my_init(shape, name=None):
    return initializations.normal(shape, scale=0.1, name=name)
def m6_1():
    model.add(Convolution2D(32, 3, 3, init=my_init))
    model.add(Activation('relu'))
    model.add(Convolution2D(32, 3, 3, init=my_init))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.5))
    model.add(Flatten())
    model.add(Dense(256, init=my_init))
    model.add(Activation('relu'))
    model.add(Dropout(0.5))
    model.add(Dense(nb_classes))
    model.add(Activation('softmax'))

保存模型和权重

model_json = model.to_json()
with open("model.json", "w") as json_file:
    json_file.write(model_json)
model.save_weights("model.h5")

加载模型和权重

json_file = open('model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json,custom_objects={'my_init':my_init})    
loaded_model.load_weights("model.h5")

错误messageTraceback(最近一次调用最后一次):

  File "revised_learn_ETL6_load_model.py", line 73, in <module>
    loaded_model = model_from_json(loaded_model_json,custom_objects={"my_init": my_init})
  File "/home/ubuntu/.env/local/lib/python2.7/site-packages/keras/models.py", line 197, in model_from_json
    return layer_from_config(config, custom_objects=custom_objects)
  File "/home/ubuntu/.env/local/lib/python2.7/site-packages/keras/utils/layer_utils.py", line 36, in layer_from_config
    return layer_class.from_config(config['config'])
  File "/home/ubuntu/.env/local/lib/python2.7/site-packages/keras/models.py", line 1019, in from_config
    layer = get_or_create_layer(first_layer)
  File "/home/ubuntu/.env/local/lib/python2.7/site-packages/keras/models.py", line 1003, in get_or_create_layer
    layer = layer_from_config(layer_data)
  File "/home/ubuntu/.env/local/lib/python2.7/site-packages/keras/utils/layer_utils.py", line 36, in layer_from_config
    return layer_class.from_config(config['config'])
  File "/home/ubuntu/.env/local/lib/python2.7/site-packages/keras/engine/topology.py", line 929, in from_config
    return cls(**config)
  File "/home/ubuntu/.env/local/lib/python2.7/site-packages/keras/layers/convolutional.py", line 381, in __init__
    self.init = initializations.get(init, dim_ordering=dim_ordering)
  File "/home/ubuntu/.env/local/lib/python2.7/site-packages/keras/initializations.py", line 107, in get
    'initialization', kwargs=kwargs)
  File "/home/ubuntu/.env/local/lib/python2.7/site-packages/keras/utils/generic_utils.py", line 16, in get_from_module
    str(identifier))
Exception: Invalid initialization: my_init

0 个答案:

没有答案