这篇文章主要介绍导出python中模型参数的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

模型的保存和读取

1.tensorflow保存和读取模型:tf.train.Saver() .save()

#保存模型需要用到save函数save(sess,save_path,global_step=None,latest_filename=None,meta_graph_suffix='meta',write_meta_graph=True,write_state=True)'''sess:保存模型要求必须有一个加载了计算图的会话,而且所有变量必须已被初始化。save_path:模型保存路径及保存名称global_step:如果提供的话,这个数字会添加到save_path后面,用于区分不同训练阶段的结果'''

示例:

#例子importtensorflowastfimportnumpyasnpimportos#用numpy产生数据x_data=np.linspace(-1,1,300)[:,np.newaxis]#转置noise=np.random.normal(0,0.05,x_data.shape)y_data=np.square(x_data)-0.5+noise#输入层x_ph=tf.placeholder(tf.float32,[None,1])y_ph=tf.placeholder(tf.float32,[None,1])#隐藏层w1=tf.Variable(tf.random_normal([1,10]))b1=tf.Variable(tf.zeros([1,10])+0.1)wx_plus_b1=tf.matmul(x_ph,w1)+b1hidden=tf.nn.relu(wx_plus_b1)#输出层w2=tf.Variable(tf.random_normal([10,1]))b2=tf.Variable(tf.zeros([1,1])+0.1)wx_plus_b2=tf.matmul(hidden,w2)+b2y=wx_plus_b2#损失loss=tf.reduce_mean(tf.reduce_sum(tf.square(y_ph-y),reduction_indices=[1]))train_op=tf.train.GradientDescentOptimizer(0.1).minimize(loss)#保存模型对象saversaver=tf.train.Saver()#判断模型保存路径是否存在,不存在就创建ifnotos.path.exists('tmp/'):os.mkdir('tmp/')#初始化withtf.Session()assess:ifos.path.exists('tmp/checkpoint'):#判断模型是否存在saver.restore(sess,'tmp/model.ckpt')#存在就从模型中恢复变量else:init=tf.global_variables_initializer()#不存在就初始化变量sess.run(init)foriinrange(1000):_,loss_value=sess.run([train_op,loss],feed_dict={x_ph:x_data,y_ph:y_data})if(i%50==0):save_path=saver.save(sess,'tmp/model.ckpt')print("迭代次数:%d,训练损失:%s"%(i,loss_value))

每调用一次保存操作会创建后3个数据文件并创建一个检查点(checkpoint)文件,简单理解就是权重等参数被保存到 .chkp.data 文件中,以字典的形式;图和元数据被保存到 .chkp.meta 文件中,可以被 tf.train.import_meta_graph 加载到当前默认的图。

2.keras保存和读取模型

model.save(filepath),同时保存model和权重的

importnumpyasnpfromkeras.datasetsimportmnistfromkeras.utilsimportnp_utilsfromkeras.modelsimportSequentialfromkeras.layersimportDensefromkeras.optimizersimportSGD#载入数据(x_train,y_train),(x_test,y_test)=mnist.load_data()#(60000,28,28)print('x_shape:',x_train.shape)#(60000)print('y_shape:',y_train.shape)#(60000,28,28)->(60000,784)x_train=x_train.reshape(x_train.shape[0],-1)/255.0x_test=x_test.reshape(x_test.shape[0],-1)/255.0#换onehot格式y_train=np_utils.to_categorical(y_train,num_classes=10)y_test=np_utils.to_categorical(y_test,num_classes=10)#创建模型,输入784个神经元,输出10个神经元model=Sequential([Dense(units=10,input_dim=784,bias_initializer='one',activation='softmax')])#定义优化器sgd=SGD(lr=0.2)#定义优化器,lossfunction,训练过程中计算准确率model.compile(optimizer=sgd,loss='mse',metrics=['accuracy'],)#训练模型model.fit(x_train,y_train,batch_size=64,epochs=5)#评估模型loss,accuracy=model.evaluate(x_test,y_test)print('\ntestloss',loss)print('accuracy',accuracy)#保存模型model.save('model.h6')

以上是导出python中模型参数的方法的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!