当与保存的模型中含有类(调用了类),使用model.save()保存为.h5格式的模型时会报错:NotImplementedError: Saving the model to HDF5 format requires the model to be a Functional model or a Sequential model. It does not work for subclassed models, because such models are defined via the body of a Python method, which isn't safely serializable. Consider saving to the Tensorflow SavedModel format (by setting save_format="tf") or using `save_weights`.
解决方法一(也是更推荐的方法):根据说明,显式设置model.save("模型名称", save_format='tf')或简单地使用model.save("模型名称"),调用时则采用tf.keras.models.load_model("模型名称路径")即可。
保存为save_format='tf'格式的模型是一个文件夹,文件夹内包含三个文件,调用时直接写模型文件夹的路径即可。
解决方法二: 将模型改为Sequential的形式,大模型或者稍微复杂的模型(如加入了残差网络的模型)改成这种方式比较麻烦,因此不推荐。
解决方法三:使用ModelCheckpoint()保存ckpt格式的模型,我还没试过这种方法,哈哈。