神经网络学习小记录9——利用Keras进行模型的保存与读取

男娘i 2023-08-17 16:23 241阅读 0赞

神经网络学习小记录9——利用Keras进行模型的保存与读取

  • 学习前言
  • Keras中保存与读取的重要函数
    • 1、model.save
    • 2、load_model
  • 全部代码

学习前言

开始做项目的话,有些时候会用到别人训练好的模型,这个时候要学会load噢。
在这里插入图片描述

Keras中保存与读取的重要函数

1、model.save

model.save用于保存模型,在保存模型前,首先要利用pip install安装h5py的模块,这个模块在Keras的模型保存与读取中常常被使用,用于定义保存格式。

  1. pip install h5py

完成安装后,可以通过如下函数保存模型。

  1. model.save("./model.hdf5")

其中,model是已经训练完成的模型,save函数传入的参数就是保存后的位置+名字。

2、load_model

load_model用于载入模型。
具体使用方式如下:

  1. model = load_model("./model.hdf5")

其中,load_model函数传入的参数就是已经完成保存的模型的位置+名字。./表示保存在当前目录。

全部代码

这是一个简单的手写体识别例子,在之前也讲解过如何构建神经网络学习小记录6——利用Keras进行简单分类,在最后我添加上了模型的保存与读取函数。

  1. import numpy as np
  2. from keras.models import Sequential,load_model,save_model
  3. from keras.layers import Dense,Activation ## 全连接层
  4. from keras.datasets import mnist
  5. from keras.utils import np_utils
  6. from keras.optimizers import RMSprop
  7. # 获取训练集
  8. (X_train,Y_train),(X_test,Y_test) = mnist.load_data()
  9. # 首先进行标准化
  10. X_train = X_train.reshape(X_train.shape[0],-1)/255
  11. X_test = X_test.reshape(X_test.shape[0],-1)/255
  12. # 计算categorical_crossentropy需要对分类结果进行categorical
  13. # 即需要将标签转化为形如(nb_samples, nb_classes)的二值序列
  14. Y_train = np_utils.to_categorical(Y_train,num_classes= 10)
  15. Y_test = np_utils.to_categorical(Y_test,num_classes= 10)
  16. # 构建模型
  17. model = Sequential([
  18. Dense(32,input_dim = 784),
  19. Activation("relu"),
  20. Dense(10),
  21. Activation("softmax")
  22. ]
  23. )
  24. rmsprop = RMSprop(lr = 0.001,rho = 0.9,epsilon = 1e-08,decay = 0)
  25. ## compile
  26. model.compile(loss = 'categorical_crossentropy',optimizer = rmsprop,metrics=['accuracy'])
  27. print("\ntraining")
  28. cost = model.fit(X_train,Y_train,nb_epoch = 2,batch_size = 100)
  29. print("\nTest")
  30. # 测试
  31. cost,accuracy = model.evaluate(X_test,Y_test)
  32. print("accuracy:",accuracy)
  33. # 保存模型
  34. model.save("./model.hdf5")
  35. # 删除现有模型
  36. del model
  37. print("model had been del")
  38. # 再次载入模型
  39. model = load_model("./model.hdf5")
  40. # 预测
  41. cost,accuracy = model.evaluate(X_test,Y_test)
  42. print("accuracy:",accuracy)

实验结果为:

  1. Epoch 1/2
  2. 60000/60000 [==============================] - 6s 104us/step - loss: 0.4217 - acc: 0.8888
  3. Epoch 2/2
  4. 60000/60000 [==============================] - 6s 99us/step - loss: 0.2240 - acc: 0.9366
  5. Test
  6. 10000/10000 [==============================] - 1s 149us/step
  7. accuracy: 0.9419
  8. model had been del
  9. 10000/10000 [==============================] - 1s 117us/step
  10. accuracy: 0.9419

有不懂的朋友可以评论询问噢。

发表评论

表情:
评论列表 (有 0 条评论,241人围观)

还没有评论,来说两句吧...

相关阅读