DeepLearning tutorial机器学习算法在训练过程中保存参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DeepLearning tutorial机器学习算法在训练过程中保存参数相关的知识,希望对你有一定的参考价值。

我是小白,说的不是很好,请原谅

@author:wepon

@blog:http://blog.csdn.net/u012162613/article/details/43169019

 

参考:pickle — Python object serializationDeepLearning Getting started

 

一、python读取"***.pkl.gz"文件

 

用到Python里的gzip以及cPickle模块,简单的使用代码如下,如果想详细了解可以参考上面给出的链接。

 

[python] view plain copy
 
  1. #以读取mnist.pkl.gz为例  
  2. import cPickle, gzip  
  3. f = gzip.open(‘mnist.pkl.gz‘, ‘rb‘)  
  4. train_set, valid_set, test_set = cPickle.load(f)  
  5. f.close()  

 

 

其实就是分两步,先读取gz文件,再读取pkl文件。pkl文件的应用正是下文要讲的,我们用它来保存机器学习算法训练过程中的参数。

 

二、机器学习算法在训练过程中如何保存参数?

 
我们知道,机器学习算法的计算量特别大,跑起程序来少则几十分钟,多则几小时甚至几天,中间如果有什么状况(比如电脑过热重启、程序出现一些小bug...)程序就会中断,如果你没把参数定时保存下来,前面的训练就当白费了,所以很有必要在程序中加入定时保存参数的功能,这样下次训练就可以将参数初始化为上次保存下来的结果,而不是从头开始随机初始化。

那么如何保存模型参数?可以将参数深复制,或者调用python的数据永久存储cPickle模块,原理不多说,直接使用就行。(注:python里有cPickle和pickle,cPickle基于c实现,比pickle快。)

直接用一个例子来说明如何使用:
 
[python] view plain copy
 
  1. a=[1,2,3]  
  2. b={4:5,6:7}  
  3. #保存,cPickle.dump函数。/home/wepon/ab是路径,ab是保存的文件的名字,如果/home/wepon/下本来就有ab这个文件,将被覆写#,如果没有,则创建。‘wb‘表示以二进制可写的方式打开。dump中的-1表示使用highest protocol。  
  4. import cPickle  
  5. write_file=open(‘/home/wepon/ab‘,‘wb‘)  
  6. cPickle.dump(a,write_file,-1)  
  7. cPickle.dump(b,write_file,-1)  
  8. write_file.close()  
  9.   
  10. #读取,cPickle.load函数。  
  11. read_file=open(‘/home/wepon/ab‘,‘rb‘)  
  12. a_1=cPickle.load(read_file)  
  13. b_1=cPickle.load(read_file)  
  14. print a,b  
  15. read_file.close()  

微信号码筛选软件 微信手机号过滤工具


 

 



在deeplearning算法中,因为用到GPU,经常是将参数声明为shared变量,因此必须用上get_value()、set_value,例如有w、v、u三个shared变量,使用代码如下:
 
[python] view plain copy
 
  1. import cPickle  
  2. #保存  
  3. write_file = open(‘path‘, ‘wb‘)    
  4. cPickle.dump(w.get_value(borrow=True), write_file, -1)    
  5. cPickle.dump(v.get_value(borrow=True), write_file, -1)    
  6. cPickle.dump(u.get_value(borrow=True), write_file, -1)   
  7. write_file.close()  
  8.   
  9. #读取  
  10. read_file = open(‘path‘)  
  11. w.set_value(cPickle.load(read_file), borrow=True)  
  12. v.set_value(cPickle.load(read_file), borrow=True)  
  13. u.set_value(cPickle.load(read_file), borrow=True)  
  14. read_file.close()  

以上是关于DeepLearning tutorial机器学习算法在训练过程中保存参数的主要内容,如果未能解决你的问题,请参考以下文章

deeplearning.ai 构建机器学习项目 Week 1 听课笔记

机器学习001 deeplearning.ai 深度学习课程 Neural Networks and Deep Learning 第一周总结

《2021机器学习-李宏毅》学习笔记

机器学习的资源

机器学习&深度学习资料

[转]机器学习深度学习数据挖掘各种资源整理