什么网站做推广最好,手机搭建个人网站,wordpress查看ftp服务器,做的好的ppt下载网站有哪些今天做了一个关于keras保存模型的实验#xff0c;希望有助于大家了解keras保存模型的区别。我们知道keras的模型一般保存为后缀名为h5的文件#xff0c;比如final_model.h5。同样是h5文件用save()和save_weight()保存效果是不一样的。我们用宇宙最通用的数据集MNIST来做这个实…今天做了一个关于keras保存模型的实验希望有助于大家了解keras保存模型的区别。我们知道keras的模型一般保存为后缀名为h5的文件比如final_model.h5。同样是h5文件用save()和save_weight()保存效果是不一样的。我们用宇宙最通用的数据集MNIST来做这个实验首先设计一个两层全连接网络inputs Input(shape(784, ))x Dense(64, activationrelu)(inputs)x Dense(64, activationrelu)(x)y Dense(10, activationsoftmax)(x)model Model(inputsinputs, outputsy)然后导入MNIST数据训练分别用两种方式保存模型在这里我还把未训练的模型也保存下来如下from keras.models import Modelfrom keras.layers import Input, Densefrom keras.datasets import mnistfrom keras.utils import np_utils(x_train, y_train), (x_test, y_test) mnist.load_data()x_trainx_train.reshape(x_train.shape[0],-1)/255.0x_testx_test.reshape(x_test.shape[0],-1)/255.0y_trainnp_utils.to_categorical(y_train,num_classes10)y_testnp_utils.to_categorical(y_test,num_classes10)inputs Input(shape(784, ))x Dense(64, activationrelu)(inputs)x Dense(64, activationrelu)(x)y Dense(10, activationsoftmax)(x)model Model(inputsinputs, outputsy)model.save(m1.h5)model.summary()model.compile(losscategorical_crossentropy, optimizersgd, metrics[accuracy])model.fit(x_train, y_train, batch_size32, epochs10)#loss,accuracymodel.evaluate(x_test,y_test)model.save(m2.h5)model.save_weights(m3.h5)如上可见我一共保存了m1.h5, m2.h5, m3.h5 这三个h5文件。那么我们来看看这三个玩意儿有什么区别。首先看看大小m2表示save()保存的模型结果它既保持了模型的图结构又保存了模型的参数。所以它的size最大的。m1表示save()保存的训练前的模型结果它保存了模型的图结构但应该没有保存模型的初始化参数所以它的size要比m2小很多。m3表示save_weights()保存的模型结果它只保存了模型的参数但并没有保存模型的图结构。所以它的size也要比m2小很多。通过可视化工具我们发现(打开m1和m2均可以显示出以下结构)而打开m3的时候可视化工具报错了。由此可以论证 save_weights()是不含有模型结构信息的。加载模型两种不同方法保存的模型文件也需要用不同的加载方法。from keras.models import load_modelmodel load_model(m1.h5)#model load_model(m2.h5)#model load_model(m3.h5)model.summary()只有加载m3.h5的时候这段代码才会报错。其他输出如下可见由save()保存下来的h5文件才可以直接通过load_model()打开那么我们保存下来的参数(m3.h5)该怎么打开呢这就稍微复杂一点了因为m3不含有模型结构信息所以我们需要把模型结构再描述一遍才可以加载m3如下from keras.models import Modelfrom keras.layers import Input, Denseinputs Input(shape(784, ))x Dense(64, activationrelu)(inputs)x Dense(64, activationrelu)(x)y Dense(10, activationsoftmax)(x)model Model(inputsinputs, outputsy)model.load_weights(m3.h5)以上把m3换成m1和m2也是没有问题的可见save()保存的模型除了占用内存大一点以外其他的优点太明显了。所以在不怎么缺硬盘空间的情况下还是建议大家多用save()来存。注意如果要load_weights()必须保证你描述的有参数计算结构与h5文件中完全一致什么叫有参数计算结构呢就是有参数坑直接填进去就行了。我们把上面的非参数结构换了一下发现h5文件依然可以加载成功比如将softmax换成relu依然不影响加载。对于keras的save()和save_weights()完全没问题了吧以上这篇浅谈keras保存模型中的save()和save_weights()区别就是小编分享给大家的全部内容了希望能给大家一个参考也希望大家多多支持脚本之家。