加载模型 Raise ValueError Unknown loss function
Loading a model Raise ValueError Unknown loss function
这是我尝试保存和加载我的模型后的代码:
model.save('path_to_my_model.h5')
del model
model = tf.keras.models.load_model('path_to_my_model.h5', custom_objects={'Wraparound2D': Wraparound2D})
import tensorflow.keras.backend as K
inp = model.input # input placeholder
outputs = [layer.output for layer in model.layers] # all layer outputs
functor = K.function(inp, outputs) # evaluation function
layer_outs = functor([X_test, 1.])
# Plot activations of different neurons in different layers
all_layer_activations = list()
min_max_scaler = lambda x : (x - np.min(x))/(np.max(x) - np.min(x))
# min_max_scaler = lambda x : (x - np.mean(x))
for j in range(1, 5):
if j==1:
layer_im = np.hstack([min_max_scaler(layer_outs[1][0][..., i]) for i in range(10)])
else:
pattern = np.reshape(layer_outs[j][0], (wspan, hspan, -1))
layer_im = np.hstack([min_max_scaler(pattern[..., i]) for i in range(10)])
all_layer_activations.append(layer_im)
但我收到以下错误:
ValueError Traceback (most recent call last)
<ipython-input-9-75d24275ae64> in <module>()
92 model.save('path_to_my_model.h5')
93 del model
---> 94 model = tf.keras.models.load_model('path_to_my_model.h5', custom_objects={'Wraparound2D': Wraparound2D})
95
96 import tensorflow.keras.backend as K
5 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/utils/generic_utils.py in deserialize_keras_object(identifier, module_objects, custom_objects, printable_module_name)
390 obj = module_objects.get(object_name)
391 if obj is None:
--> 392 raise ValueError('Unknown ' + printable_module_name + ':' + object_name)
393 # Classes passed by name are instantiated with no args, functions are
394 # returned as-is.
ValueError: Unknown loss function: <lambda>
我找不到为什么我得到它感谢帮助。这个错误发生在我尝试加载模型之前一切都很好
TL/DR:当您在保存的模型中有custom_objects时,您需要提供compile = False
作为load_model
的参数。加载模型后,需要使用 custom_objects 进行编译。请检查 example here.
当您使用 custom_objects 保存模型时,那些 custom_objects 无法正确序列化。因此,当您加载模型时,您需要传递 compile=False
并加载模型。加载模型后,您需要通过传递自定义对象来编译模型。
这是我尝试保存和加载我的模型后的代码:
model.save('path_to_my_model.h5')
del model
model = tf.keras.models.load_model('path_to_my_model.h5', custom_objects={'Wraparound2D': Wraparound2D})
import tensorflow.keras.backend as K
inp = model.input # input placeholder
outputs = [layer.output for layer in model.layers] # all layer outputs
functor = K.function(inp, outputs) # evaluation function
layer_outs = functor([X_test, 1.])
# Plot activations of different neurons in different layers
all_layer_activations = list()
min_max_scaler = lambda x : (x - np.min(x))/(np.max(x) - np.min(x))
# min_max_scaler = lambda x : (x - np.mean(x))
for j in range(1, 5):
if j==1:
layer_im = np.hstack([min_max_scaler(layer_outs[1][0][..., i]) for i in range(10)])
else:
pattern = np.reshape(layer_outs[j][0], (wspan, hspan, -1))
layer_im = np.hstack([min_max_scaler(pattern[..., i]) for i in range(10)])
all_layer_activations.append(layer_im)
但我收到以下错误:
ValueError Traceback (most recent call last)
<ipython-input-9-75d24275ae64> in <module>()
92 model.save('path_to_my_model.h5')
93 del model
---> 94 model = tf.keras.models.load_model('path_to_my_model.h5', custom_objects={'Wraparound2D': Wraparound2D})
95
96 import tensorflow.keras.backend as K
5 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/utils/generic_utils.py in deserialize_keras_object(identifier, module_objects, custom_objects, printable_module_name)
390 obj = module_objects.get(object_name)
391 if obj is None:
--> 392 raise ValueError('Unknown ' + printable_module_name + ':' + object_name)
393 # Classes passed by name are instantiated with no args, functions are
394 # returned as-is.
ValueError: Unknown loss function: <lambda>
我找不到为什么我得到它感谢帮助。这个错误发生在我尝试加载模型之前一切都很好
TL/DR:当您在保存的模型中有custom_objects时,您需要提供compile = False
作为load_model
的参数。加载模型后,需要使用 custom_objects 进行编译。请检查 example here.
当您使用 custom_objects 保存模型时,那些 custom_objects 无法正确序列化。因此,当您加载模型时,您需要传递 compile=False
并加载模型。加载模型后,您需要通过传递自定义对象来编译模型。