在使用tensorflow时,经常需要用别人训练好的模型来预测我们自己我们自己的数据。一般分为轻量级的保存参数和保存整个模型。使用保存weights 可以参考本人另外一篇博客。
这儿主要介绍导入别人训练好的以h5格式保存的model并用其预测自己的数据:
1. 导入库
import tensorflow as tf
from tensorflow.keras import datasets, layers, optimizers, Sequential, metrics
import pandas as pd
import numpy as np
2.导入别人保存好的model
final_model = tf.keras.models.load_model("saved_model.h5", compile=True) # 注意这儿得compile需要设置为true,如果你不设置你需要多一步compile的过程。
3. 导入你自己的数据
plas=np.loadtxt("whole_genomewalk/plas_com.txt",dtype="int32")
4. 开始预测
>>> plas_prob=final_model.predict(plas) # 预测
# 查看前10个样本的预测概率。由于这个model是预测二分类,输出结果是正分类样本的概率。如果是多分类模型,预测结果是每个分类对应的概率。
>>> plas_prob[:10]
array([[0.9499076 ],
[0.966307 ],
[0.8369276 ],
[0.88482785],
[0.9329413 ],
[0.9565406 ],
[0.95790464],
[0.89393246],
[0.9659232 ],
[0.04010561]], dtype=float32)
5. 概率转化为分类结果
>>>plas_result=np.ones(plas_prob.shape[0]) # 假设所有样本都是正分类1
>>> plas_result
array([1., 1., 1., ..., 1., 1., 1.])
>>> plas_result[plas_prob.ravel()<0.5]=0 # 将概率p<0.5 的样本换算成负分类样本0