Keras 如何利用训练好的神经网络进行预测
2017-08-13 16:39
811 查看
分成两种情况,一种是公开的训练好的模型,下载后可以使用的,一类是自己训练的模型,需要保存下来,以备今后使用。
如果是第一种情况,则参考 http://keras-cn.readthedocs.io/en/latest/other/application/
使用的是Application应用,文档中的例子如下
如果是自己的模型想保存下来,参考http://keras-cn.readthedocs.io/en/latest/for_beginners/FAQ/#keras_1
又有两种方式,一种是:
你可以使用
模型的结构,以便重构该模型
模型的权重
训练配置(损失函数,优化器等)
优化器的状态,以便于从上次训练中断的地方开始
使用
另外一种方式,可以分开保存模型结构和模型参数:
如果你只是希望保存模型的结构,而不包含其权重或配置信息,可以使用:
这项操作将把模型序列化为json或yaml文件,这些文件对人而言也是友好的,如果需要的话你甚至可以手动打开这些文件并进行编辑。
当然,你也可以从保存好的json文件或yaml文件中载入模型:
如果需要保存模型的权重,可通过下面的代码利用HDF5进行保存。注意,在使用前需要确保你已安装了HDF5和其Python库h5py
如果你需要在代码中初始化一个完全相同的模型,请使用:
如果你需要加载权重到不同的网络结构(有些层一样)中,例如fine-tune或transfer-learning,你可以通过层名字来加载模型:
json_string = model.to_json()
open('my_model_architecture.json','w').write(json_string)
model.save_weights('my_model_weights.h5')
model = model_from_json(open('my_model_architecture.json').read())
model.load_weights('my_model_weights.h5')
如果是第一种情况,则参考 http://keras-cn.readthedocs.io/en/latest/other/application/
使用的是Application应用,文档中的例子如下
利用ResNet50网络进行ImageNet分类
from keras.applications.resnet50 import ResNet50 from keras.preprocessing import image from keras.applications.resnet50 import preprocess_input, decode_predictions import numpy as np model = ResNet50(weights='imagenet') #仅仅这样就可以 img_path = 'elephant.jpg' img = image.load_img(img_path, target_size=(224, 224)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) preds = model.predict(x) # decode the results into a list of tuples (class, description, probability) # (one such list for each sample in the batch) print('Predicted:', decode_predictions(preds, top=3)[0]) # Predicted: [(u'n02504013', u'Indian_elephant', 0.82658225), (u'n01871265', u'tusker', 0.1122357), (u'n02504458
如果是自己的模型想保存下来,参考http://keras-cn.readthedocs.io/en/latest/for_beginners/FAQ/#keras_1
又有两种方式,一种是:
你可以使用
model.save(filepath)将Keras模型和权重保存在一个HDF5文件中,该文件将包含:
模型的结构,以便重构该模型
模型的权重
训练配置(损失函数,优化器等)
优化器的状态,以便于从上次训练中断的地方开始
使用
keras.models.load_model(filepath)来重新实例化你的模型,如果文件中存储了训练配置的话,该函数还会同时完成模型的编译
另外一种方式,可以分开保存模型结构和模型参数:
如果你只是希望保存模型的结构,而不包含其权重或配置信息,可以使用:
# save as JSON json_string = model.to_json() # save as YAML yaml_string = model.to_yaml()
这项操作将把模型序列化为json或yaml文件,这些文件对人而言也是友好的,如果需要的话你甚至可以手动打开这些文件并进行编辑。
当然,你也可以从保存好的json文件或yaml文件中载入模型:
# model reconstruction from JSON: from keras.models import model_from_json model = model_from_json(json_string) # model reconstruction from YAML model = model_from_yaml(yaml_string)
如果需要保存模型的权重,可通过下面的代码利用HDF5进行保存。注意,在使用前需要确保你已安装了HDF5和其Python库h5py
model.save_weights('my_model_weights.h5')
如果你需要在代码中初始化一个完全相同的模型,请使用:
model.load_weights('my_model_weights.h5')
如果你需要加载权重到不同的网络结构(有些层一样)中,例如fine-tune或transfer-learning,你可以通过层名字来加载模型:
model.load_weights('my_model_weights.h5', by_name=True) 例子:
json_string = model.to_json()
open('my_model_architecture.json','w').write(json_string)
model.save_weights('my_model_weights.h5')
model = model_from_json(open('my_model_architecture.json').read())
model.load_weights('my_model_weights.h5')
http://blog.csdn.net/johinieli/article/details/69367176 http://blog.csdn.net/johinieli/article/details/69367434
相关文章推荐
- 如何利用训练好的神经网络进行预测
- 如何利用训练好的神经网络进行预测
- 如何保存训练好的神经网络直接进行测试-TensorFlow模型持久化
- Torch7学习(六)——学习神经网络包的用法(4)——利用optim进行训练
- 如何利用自组织竞争网络进行患者癌症发病预测
- python关于如何进行Keras神经网络可视化的配置
- ubuntu中利用h5py保存训练好的keras 神经网络模型
- 利用MATLAB 2016a进行BP神经网络的预测(含有神经网络工具箱)
- 【神经网络与深度学习】用训练好的caffemodel来进行分类
- 如何利用BP网络进行神经网络变量筛选
- 深度学习-CAFFE利用CIFAR10网络模型训练自己的图像数据获得模型-4应用生成模型进行预测
- matlab利用训练好的BP神经网络来预测新数据(先保存网络,再使用网络)
- 干货|如何用Keras为序列预测问题开发复杂的编解码循环神经网络?
- TensorFlow 1.4利用Keras+Estimator API进行训练和预测
- 第三期 利用已经训练的神经网络进行图像识别 《显卡就是开发板》
- Ubuntu中利用h5py保存训练好的keras神经网络模型
- 深度学习系列教程 - 1.2.2 神经网络是如何进行预测的?
- 如何利用神经网络结合遗传算法进行非线性函数极值寻优(1)
- 如何利用神经网络结合遗传算法进行非线性函数极值寻优(2)
- 利用MATLAB 2016a进行BP神经网络的预测(含有神经网络工具箱)